2021年3月3日 星期三

本人發言不代表本人立場 Week02

1.開OpenGL

  • 打開OPENGL
    • 打開程式碼
    • 留下反白的五行


2.開GLUT

  • 打開GLUT
    • 開NOTEPAD++儲存GLUT的程式碼
    • 留主程式前幾行


原始程式:

#include <GL/glut.h>///使用GLUT的外掛 static void display(void) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);///清背景 glutSolidTeapot(0.3); glutSwapBuffers();///更新畫面 } int main(int argc, char *argv[]) { glutInit(&argc, argv);///初始化GLUT glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH); ///初始化Display的功能 glutCreateWindow("ME");///建視窗 glutDisplayFunc(display);///準備dispaly的函式 glutMainLoop();///主函式 }

加上紅字那行後
執行結果:


改顏色:

#include <GL/glut.h>///使用GLUT的外掛 static void display(void) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);///清背景 glColor3f(1,0,0);
    glutSolidTeapot(0.3); glutSwapBuffers();///更新畫面
} int main(int argc, char *argv[]) { glutInit(&argc, argv);///初始化GLUT glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH); ///初始化Display的功能 glutCreateWindow("ME");///建視窗 glutDisplayFunc(display);///準備dispaly的函式 glutMainLoop();///主函式 }

執行結果:



合併程式碼:

把第一步的程式碼加到第二步

#include <GL/glut.h>///使用GLUT的外掛 static void display(void) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);///清背景
    glBegin(GL_TRIANGLES); glColor3f(1.0f, 0.0f, 0.0f); glVertex2f(0.0f, 1.0f); glColor3f(0.0f, 1.0f, 0.0f); glVertex2f(0.87f, -0.5f); glColor3f(0.0f, 0.0f, 1.0f); glVertex2f(-0.87f, -0.5f); glEnd();
glColor3f(1,0,0);
    glutSolidTeapot(0.3);
    glutSwapBuffers();///更新畫面
} int main(int argc, char *argv[]) { glutInit(&argc, argv);///初始化GLUT glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH); ///初始化Display的功能 glutCreateWindow("ME");///建視窗 glutDisplayFunc(display);///準備dispaly的函式 glutMainLoop();///主函式 }

加上OpenGL的程式後
執行結果:


頂點 Vertex:

把glBegin(GL_TRIANGLES); 改成 glBegin(GL_LINE_LOOP);

執行結果:

加上數學功能後:

#include <GL/glut.h>///使用GLUT的外掛
#include <math.h> static void display(void) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);///清背景
    glBegin(GL_POLYGON);      glColor3f(1.0f, 0.3f, 0.5f);
       for(float angle=0;angle<3.1415926*2;angle+=0.01){
            glVertex2f(0.5*cos(angle),0.5*sin(angle));
        } 
glEnd();
glColor3f(1,0,0);
    glutSolidTeapot(0.3);
    glutSwapBuffers();///更新畫面
} int main(int argc, char *argv[]) { glutInit(&argc, argv);///初始化GLUT glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH); ///初始化Display的功能 glutCreateWindow("ME");///建視窗 glutDisplayFunc(display);///準備dispaly的函式 glutMainLoop();///主函式 }

加上黃字畫出圓形
執行結果:


沒有留言:

張貼留言

距地表面160 Week11

 #include "glm.h" GLMmodel* pmodel = NULL; void drawmodel(void) {     if (!pmodel) { pmodel = glmReadOBJ("data/porsche.obj...