2018年3月9日 星期五

Week02_黃惠嘉

*點線面顏色

1.jsyeh.org/3dcg10下載data.zip、windows.zip(範例)、glut32.dll



2.將glut32.dll複製到windows,這樣就可以跑範例Shapes



3.打開範例Shapes,滑鼠點綠色可以上下一定調整位置顏色
滑鼠右鍵可以選擇Shape



4.把data放進windows,可以執行maya模型





5.介紹程式
gl 是opencv的函式,大小寫不可更改
glBegin(GL_QUAD_STRIP)///開始
glColor3f(1.00 ,1.00 ,1.00 );///3是3個參數浮點數,(R,G,B)
glVertex2f(50.0,100.0);///2是2個參數浮點數,(x頂點,y頂點)



6.打開openGL






7.打開GLUT檔



把程式刪到如下

#include <GL/glut.h>

static void display(void)
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
   
    glutSwapBuffers();
}

int main(int argc, char *argv[])
{
    glutInit(&argc, argv);
   ///glutInitWindowSize(640,480);
   /// glutInitWindowPosition(10,10);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);

    glutCreateWindow("GLUT Shapes");

    ///glutReshapeFunc(resize);
    glutDisplayFunc(display);
    ///glutKeyboardFunc(key);
    ///glutIdleFunc(idle);

    glutMainLoop();

    return EXIT_SUCCESS;
}

8.畫茶壺
在 display加  glutSolidTeapot(0.3);如下
static void display(void)
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    glutSolidTeapot(0.3);
    glutSwapBuffers();
}


9.畫三角型

複製下面程式碼
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();

放到display裡


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();
    glutSwapBuffers();
}


10.右鍵activate project 會變粗體並執行檔案


11.開GLUT專案

程式碼如下

#include <GL/glut.h>///GLUT外掛

static void display(void)
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);///清畫面
    glutSoildTeapot(0.3);///畫茶壺
    glutSwapBuffers();///交換畫面秀出來
}
int main(int argc, char *argv[])///主要函式
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("05160080");

    glutDisplayFunc(display);
    glutMainLoop();///主要的迴圈

    return EXIT_SUCCESS;
}

12.如果有兩個 glColor3f會執行glutSoildTeapot上面的那個
    glColor3f(0,0,1); ///藍色  
    glColor3f(1,0,1); ///紫色
    glutSoildTeapot(0.3);///畫茶壺

上面的茶壺會是紫色

13.
static void display(void)
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);///清畫面
    glBegin(GL_POLYGON);///畫多邊形
        glColor3f(1,0,0); ///紅色
        glVertex2f(0,1);///上面
        glColor3f(0,1,0); ///綠色
        glVertex2f(1,0);///右邊
        glColor3f(0,0,1); ///藍色
        glVertex2f(-1,0);///左邊
    glEnd();
    /// glColor3f(1,0,1); ///紫色
    ///glutSoildTeapot(0.3);///畫茶壺
    glutSwapBuffers();///交換畫面秀出來
}


14.HW2可以用小畫家來找點,用滑鼠動來看是幾*幾的像素
glVertex2f((小畫家像素x-150)/150,(小畫家像素y-150)/150);

沒有留言:

張貼留言