2024年2月26日 星期一

哈囉你好嗎隨便 week 2

 1.範例

去https://jsyeh.org/3dcg10

載data windows兩個壓縮檔 跟glut32.dll 三個東西

windows解壓縮

其他東西都丟進去windows裡面

開Shapes.exe

可以點右鍵自己玩

滑鼠右鍵
        右邊切換點、線、面 
        左邊可以切換大的頂點
左鍵    可以在綠色下上調整

色彩
glColor3f(r,g,b) 小畫家可以看 數字要除以255.0 滴管 吸色

頂點
glVertex2f(x,y) 小畫家可以看

        




2.小畫家技巧

1.小畫家開起來 圖片丟上去
2.左上角是0,0 右下角是400,400
3,關於座標 openGL 預設是正中間0,0 十字座標-1到1
4.座標會亂掉 
5.假設 圖片大小400x400
6.open GL x座標=(小畫家x座標-200)/200  open GL y座標= -(小畫家y標-200)/200 

3.GLUT必要檔案

1.到moodle的【上課用軟體】載壓縮檔解壓縮
2.複製一個freeglut\lib\libfreeglut.a
3.把複製的libfreeglut.a改名改成libglut32.a  free要刪掉

4.親手打造GLUT程式 茶壺



#include <GL/glut.h>

void display()
{
    glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);///清畫面

    glColor3f(1,1,0);///顏色(RGB)這是黃色
    glutSolidTeapot(0.3);///就一個神燈 括弧內的是大小



    glutSwapBuffers();///畫好提交
}

int main(int argc, char** argv)///主函式 進階版 看不懂
{
    glutInit( &argc, argv);///把參數給glutInit 初始化
    glutInitDisplayMode( GLUT_DOUBLE | GLUT_DEPTH );///雙緩衝區+3D深度功能
    glutCreateWindow("第二周的程式");///開GLUT視窗

    glutDisplayFunc(display);///用來顯示的函式

    glutMainLoop();
}


幾乎看不懂 以後會看懂 執行會看到茶壺

5.RGB三角形 triangle





#include <GL/glut.h>


void display()

{

    glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);


    glColor3f(0,0,0);

    ///glutSolidTeapot(0.3); 把茶壺註解掉


    glBegin(GL_POLYGON);

        glColor3f(1,0,0); 顏色(RBG)

        glVertex2f(-1,-1); 座標 vertex 頂點


        glColor3f(0,1,0);

        glVertex2f(+1,-1);


        glColor3f(0,0,1);

        glVertex2f(0,+1);


    glEnd();

(紅色為三角型)

    glutSwapBuffers();

}


int main(int argc, char** argv)

{

    glutInit( &argc, argv);

    glutInitDisplayMode( GLUT_DOUBLE | GLUT_DEPTH );

    glutCreateWindow("第二周的程式");


    glutDisplayFunc(display);


    glutMainLoop();

}

 

5.圓形

需要include <math.h>

glBegin(GL_POLYGON) 
for (float a=0; a<=3.14*2;a+=0.1){
    glVertex(cos (a),sin(a));     調整跟座標系統的圓形一樣
}
glEnd();




可以自己做函式

void myCircle (float cx, floatcy ,float r){

glBegin(GL_POLYGON) 
for (float a=0; a<=3.14*2;a+=0.1){
    glVertex(r*cos (a)+cx,r*sin(a)+cy);     調整跟座標系統的圓形一樣
}
glEnd();

沒有留言:

張貼留言