2023年3月1日 星期三

愛喝奶茶的石靈-week03

 介於要醒跟不醒之間 困阿ˊ ωˋ~

第一節課 上課本然後講一下上禮拜的作業~

第一個先把老師的網址裡的東西載下來(在隨身碟裡)
windows/data/glut32.dll
windows跟data解壓縮~

data丟進windows裡面

打開transformation瞧瞧


開始作業

#include <GL/glut.h>
void display()
{

    glutSolidTeapot(0.3);///畫出一個實心茶壺,它的大小0.3

    glutSwapBuffers();///請GLUT把畫面swap送到顯示的地方

}



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

{///上面是特別的main()函式 有很多參數

glutInit(&argc, argv);///把GLUT開起來

    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);///顯示設定

    glutCreateWindow("GLUT Shapes");///要開視窗

glutDisplayFunc(display);///要顯示對應的函式

glutMainLoop();///最後用main迴圈,壓在最後面

}

這是畫茶壺


接下來加移動程式
glPushMatrix();///備份
glTranslatef(0.5,0,0);///移動
glPopMatrix();///還原

#include <GL/glut.h>
void display()
{
    glPushMatrix();///備份
        
        glTranslatef(0.5,0,0);///加了還不夠黑
        glutSolidTeapot(0.3);///畫出一個實心茶壺,它的大小0.3
    glPopMatrix();///還原

    glutSwapBuffers();///請GLUT把畫面swap送到顯示的地方

}



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

{///上面是特別的main()函式 有很多參數

glutInit(&argc, argv);///把GLUT開起來

    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);///顯示設定

    glutCreateWindow("GLUT Shapes");///要開視窗

glutDisplayFunc(display);///要顯示對應的函式

glutMainLoop();///最後用main迴圈,壓在最後面

}
這是變更後移動的樣子 往右跑了

第二階段
滑鼠幫大忙
加入程式
glutMouseFunc(mouse);///02-1加入滑鼠
#include<stdio.h>
#include<stdio.h>
void mouse(int button,int state,int x,int y)
{///02-2滑鼠幫大忙
    printf("%d %d %d %d\n",button,state,x,y);
}
#include <GL/glut.h>
void display()
{
    glPushMatrix();///備份

        glTranslatef(0.5,0,0);///加了還不夠黑
        glutSolidTeapot(0.3);///畫出一個實心茶壺,它的大小0.3
    glPopMatrix();///還原

    glutSwapBuffers();///請GLUT把畫面swap送到顯示的地方

}
#include<stdio.h>
void mouse(int button,int state,int x,int y)
{///02-2滑鼠幫大忙
    printf("%d %d %d %d\n",button,state,x,y);
}
int main(int argc, char *argv[])

{///上面是特別的main()函式 有很多參數

glutInit(&argc, argv);///把GLUT開起來

    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);///顯示設定

    glutCreateWindow("GLUT Shapes");///要開視窗

glutDisplayFunc(display);///要顯示對應的函式
glutMouseFunc(mouse);///02-1加入滑鼠

glutMainLoop();///最後用main迴圈,壓在最後面

}
滑鼠點下去會跑數字
分別是滑鼠按鍵/按下放開/x/y座標
下一階段

加入程式
X=(x-150)/150.0;
    Y=-(y-150)/150.0;///02-3修改X Y(口決:都減150再除150.0 Y要負號)
float X=0,Y=0;///02-4設定X Y
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);///02-5清個背景
很煩我知道 所以有完整的 不客氣O WO
#include <GL/glut.h>
float X=0,Y=0;///02-4設定X Y
void display()
{
    glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);///02-5清個背景
    glPushMatrix();///備份

        glTranslatef(X,Y,0);///加了還不夠黑
        glutSolidTeapot(0.3);///畫出一個實心茶壺,它的大小0.3
    glPopMatrix();///還原

    glutSwapBuffers();///請GLUT把畫面swap送到顯示的地方

}
#include<stdio.h>
void mouse(int button,int state,int x,int y)
{///02-2滑鼠幫大忙
    ///printf("%d %d %d %d\n",button,state,x,y);
    X=(x-150)/150.0;
    Y=-(y-150)/150.0;///02-3修改X Y(口決:都減150再除150.0 Y要負號)
}
int main(int argc, char *argv[])

{///上面是特別的main()函式 有很多參數

glutInit(&argc, argv);///把GLUT開起來

    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);///顯示設定

    glutCreateWindow("GLUT Shapes");///要開視窗

glutDisplayFunc(display);///要顯示對應的函式

glutMouseFunc(mouse);///02-1加入滑鼠

glutMainLoop();///最後用main迴圈,壓在最後面

}


可以跟著滑鼠變位置拉~

gitHub有個gist.github可以弄程式 但我不想弄 所以算了ˊ ωˋ


沒有留言:

張貼留言