2023年2月23日 星期四

真 WEEK02

 WEEK02點線面色彩

依照上週方法開啟GLUT

CodeBlocks: File-New-Project, 選 GLUT專案, 按GO

按Next->輸入檔名week01-2_GLUT->next->Finish

再把 GLUT 的目錄, 設成 桌面的 freeglut 

按下Sources 中的Main.pp

更改其中的程式碼






















1.製作茶壺




#include <GL/glut.h>

void display(){
    glutSolidTeapot(0.3);///畫出實心的茶盒
    glutSwapBuffers();///交換顯示出來
}
int main(int argc, char *argv[])
    glutInit(&argc, argv);///要開始GLUT的功能
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);///設定GLUT的顯示模式
    glutCreateWindow("GLUT Shapes");///建一個窗字
    glutDisplayFunc(display);///要顯示的函式
    glutMainLoop();///主要迴圈卡最後面
}


按下Build&Run就會跑出茶壺圖案














2.更改茶壺顏色

新增前三行 增加一個茶壺 改顏色
glColor3f(r,b,g);



#include <GL/glut.h>

void display(){
    glColor3f(2,2,0);///色彩
    glutSolidTeapot(0.5);///畫出實心的大茶壺

    glColor3f(0,2,2);///色彩
    glutSolidTeapot(0.3);///畫出實心的小茶壺

    glutSwapBuffers();///交換顯示出來
}
int main(int argc, char *argv[])
{
    glutInit(&argc, argv);///要開始GLUT的功能
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);///設定GLUT的顯示模式
    glutCreateWindow("week02");///建一個窗字
    glutDisplayFunc(display);///要顯示的函式
    glutMainLoop();///主要迴圈卡最後面
}

3.用頂點劃出外圍三角形


更改程式碼
新增:
 glBegin(GL_POLYGON);    
glVertex2f();
 glEnd();

#include <GL/glut.h>

void display(){
    glColor3f(0,1,0);///色彩
    glBegin(GL_POLYGON);
        glVertex2f(0,1);
        glVertex2f(-1,-1);
        glVertex2f(+1,-1);
    glEnd();

    glColor3f(1,1,0);
    glutSolidTeapot(0.3);///畫出實心的大茶壺
    glutSwapBuffers();///交換顯示出來
}
int main(int argc, char *argv[])
{
    glutInit(&argc, argv);///要開始GLUT的功能
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);///設定GLUT的顯示模式
    glutCreateWindow("week02");///建一個窗字
    glutDisplayFunc(display);///要顯示的函式
    glutMainLoop();///主要迴圈卡最後面
}

4..將三角形變彩色

刪除:glColor3f(0,1,0);
新增:glColor3f();





#include <GL/glut.h>

void display()
{
    ///glColor3f(0,1,0);///色彩
    glBegin(GL_POLYGON);
        glColor3f(1,0,0); glVertex2f(0,1);///上面(紅色)
        glColor3f(0,1,0); glVertex2f(-1,-1);///左下(綠色)
        glColor3f(0,0,1); glVertex2f(+1,-1);///右下(藍色)
    glEnd();

    glColor3f(1,1,0);
    glutSolidTeapot(0.3);///畫出實心的大茶壺
    glutSwapBuffers();///交換顯示出來
}
int main(int argc, char *argv[])
{
    glutInit(&argc, argv);///要開始GLUT的功能
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);///設定GLUT的顯示模式
    glutCreateWindow("week02");///建一個窗字
    glutDisplayFunc(display);///要顯示的函式
    glutMainLoop();///主要迴圈卡最後面
}


#小畫家
頂點要在1和-1間
(x-100)/100.0
顏色也是要在1和-1間
x/255

5.畫圓


#include <GL/glut.h>
#include <math.h>
void myCircle(float r,float x,float y)
{

    glBegin(GL_POLYGON);
    for (float a=0 ;a<=2*3.1415926535897932;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();
}

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

    glutDisplayFunc(display);

    glutMainLoop();
}


































沒有留言:

張貼留言