2023年3月1日 星期三

:/ week03

 打開 https://jsyeh.org/3dcg10/

下載:data data.zip

         win32 windows.zip


解壓縮後把data資料夾放入windows資料夾


執行Transformation.exe看有沒有畫面


打開code blocks 開新的glut
加入水壺

#include <GL/glut.h>

void display()

{

    glutSolidTeapot(0.3);

    glutSwapBuffers();

}

int main(int argc, char *argv[])

{

glutInit(&argc, argv);

glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);

glutCreateWindow("GLUT Shapes");

glutDisplayFunc(display);

glutMainLoop();


}

加入

glPushMatrix();///備份矩陣

glTranslated(0.5 ,0 ,0 );///移動位置

glPopMatrix();///還原矩陣

加入

#include <stdio.h>

void mouse(int button,int state,int x,int y)///button(左,右鍵) state(按下去是0放開是1)

{

    printf("%d %d %d %d\n",button,state,x,y);

}

在glutDisplayFunc(display);下方加入glutMouseFunc(mouse);

點了會顯示座標

使水壺可以移動

#include <GL/glut.h>
float X=0,Y=0;
void display()
{

    glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);///清背景
    glPushMatrix();///備份矩陣
        glTranslated(X, Y ,0 );
        glutSolidTeapot(0.3);
    glPopMatrix();///還原矩陣

    glutSwapBuffers();

}
void mouse(int button,int state,int x,int y)
{
    X = (x-150)/150.0;
    Y = -(y-150)/150.0;
}

int main(int argc, char *argv[])

{

glutInit(&argc, argv);

glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);

glutCreateWindow("GLUT Shapes");

glutDisplayFunc(display);
glutMouseFunc(mouse);

glutMainLoop();

}

在小黑窗點你要的形狀

#include <GL/glut.h>
#include <stdio.h>
void display()
{
    glBegin(GL_POLYGON);///實心
    座標複製到這裡    
    glEnd();

    glBegin(GL_LINE_LOOP);///線
    座標複製到這裡  
    glEnd();
    glutSwapBuffers();
}
void mouse(int button, int state, int x, int y)
{
    float X = (x-250)/250.0;
    float Y = -(y-250)/250.0;
    if(state==GLUT_DOWN){
        printf("    glVertex2f(%.3f, %.3f);\n", X, Y);
    }
}
int main(int argc, char* argv[] )
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGB|GLUT_DOUBLE|GLUT_DEPTH);
    glutInitWindowSize(500,500);
    glutCreateWindow("week03");

    glutDisplayFunc(display);
    glutMouseFunc(mouse);
    glutMainLoop();
}
















沒有留言:

張貼留言