2023年2月23日 星期四

week02_glut

 WEEK02-1

    STEP02-1 親手打造glut程式10行

       #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);

                //要設定 GLUT 的顯示模式

                glutCreateWindow("GLUT Shapes");//要建一個窗字,較 "..."

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

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

         }

   



       STEP02-1 glColor3f(0,1,0) 將茶壺上色 黃色

                            glColor3f(0,1,0) 將茶壺變綠色 glutSolidTeapot( 0.3 ) 改變茶壺大小


         STEP02-2  加上頂點
                            glColor3f(0,1,0);///綠色的
                               glBegin(GL_POLYGON);///多邊形
                               glVertex2f(0,1);///上面
                               glVertex2f(-1,-1);///左下角
                               glVertex2f(1,-1);///右下角
                               glEnd();


                            
                            glColor3f(0,1,0)刪掉 由頂點填顏色
                                glColor3f(1,0,0); glVertex2f(0,1);///上面 紅色
                                glColor3f(0,1,0); glVertex2f(-1,-1);///左下角 黃色
                                glColor3f(0,0,1); glVertex2f(1,-1);///右下角 綠色



            STEP02-3  用很多頂點畫出一個很帥的圖
                                #include <GL/freeglut.h>
oid display()
{
    ///小畫家幫我們寫程v式 除 255.0 就好
    glColor3f(233/255.0,141/255.0,128/255.0);
    ///顏色不可以超過不可以
    glBegin(GL_POLYGON);///多邊形
        glVertex2f((65-100)/100.0,-(54-100)/100.0);
        glVertex2f((34-100)/100.0,-(138-100)/100.0);
        glVertex2f((59-100)/100.0,-(138-100)/100.0);
        glVertex2f((87-100)/100.0,-(53-100)/100.0);
        ///先減一半 再除一半 y變負號
    glEnd();
    glutSwapBuffers();
}
                              


                

               STEP02-4 畫圓
                            #include <math.h>
void myCircle(float r, float x, float y)
{

    glBegin(GL_POLYGON);
    for (float a=0;a<=2*3.144592;a+=0.01)
    {
        glVertex2f(r*cos(a)+x,r*sin(a)+y);
    }
    glEnd();
}

void display()
{
    glColor3f(233/255.0,141/255.0,128/255.0);
    myCircle(0.5,0,0);

    glColor3f(1,1,0);
    myCircle(0.3,0.5,0.5);

    glColor3f(1,0,0);
    myCircle(0.3,-0.5,0.5);

    glColor3f(0,1,0);
    myCircle(0.3,-0.5,-0.5);

    glColor3f(0,0,1);
    myCircle(0.3,0.5,-0.5);

    glutSwapBuffers();

}


沒有留言:

張貼留言