2017年3月23日 星期四

這週沒問題的~

一.
先到老師給的網站 jsyeh.org/3dcg10 下載 data win32 gult32.dll 這三個


二.
試試
移動
旋轉
縮放



三.
學會如何改位子
#include <GL/glut.h>

void display(void)
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    glPushMatrix();//備份
        glTranslatef(0,1,0);
        glutSolidTeapot(0.3);
        glPopMatrix();//還原

    glutSwapBuffers();
}

int main(int argc, char *argv[])
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);

    glutCreateWindow("03160411");


    glutDisplayFunc(display);


    glutMainLoop();
}


四.
滑鼠移動
#include <GL/glut.h>

float mouseX=0,mouseY=0;
void display(void)
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    glPushMatrix();
        glTranslatef(mouseX,mouseY,0);
        glutSolidTeapot(0.3);
        glPopMatrix();

    glutSwapBuffers();
}
void motion (int x, int y)
{
    mouseX=(x-150)/150.0;
    mouseY=-(y-150)/150.0;
    glutPostRedisplay();
}
int main(int argc, char *argv[])
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);

    glutCreateWindow("03160411");

    glutMotionFunc(motion);
    glutDisplayFunc(display);


    glutMainLoop();
}


五.
放大縮小
#include <GL/glut.h>

float mouseX=0,mouseY=0;
void display(void)
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);//清除舊畫面

    glPushMatrix();
        glScalef(mouseX,mouseY,0);//放大縮小
        //glTranslatef(mouseX,mouseY,0);
        glutSolidTeapot(0.3);
        glPopMatrix();//還原

    glutSwapBuffers();//交換繪圖才能畫出來
}
void motion (int x, int y)
{
    mouseX=(x-150)/150.0;
    mouseY=-(y-150)/150.0;
    glutPostRedisplay();
}
int main(int argc, char *argv[])
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);

    glutCreateWindow("03160411");

    glutMotionFunc(motion);
    glutDisplayFunc(display);


    glutMainLoop();
}



六.
旋轉
#include <GL/glut.h>

float mouseX=0,mouseY=0,rotX=0;
void display(void)
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    glPushMatrix();
        glRotatef(rotX,0,0,1);
        //glTranslatef(mouseX,mouseY,0);
        glutSolidTeapot(0.3);
        glPopMatrix();

    glutSwapBuffers();
}
void motion (int x, int y)
{
    mouseX=(x-150)/150.0;
    mouseY=-(y-150)/150.0;
    rotX=x;
    glutPostRedisplay();
}
int main(int argc, char *argv[])
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("03160411");
    glutMotionFunc(motion);
    glutDisplayFunc(display);
    glutMainLoop();
}


沒有留言:

張貼留言