close

參考書籍-OpenGL 3D繪圖互動程式設計


理論

openGL-(5個座標空間) @ 奇怪的(´・ω・`)增加了的部落格 :: 痞客邦 :: (pixnet.net)  

openGL-(正交投影&透視投影) @ 奇怪的(´・ω・`)增加了的部落格 :: 痞客邦 :: (pixnet.net) 


實作

openGL-視窗建立(詳解) @ 奇怪的(´・ω・`)增加了的部落格 :: 痞客邦 :: (pixnet.net)  下面沒有介紹的這裡有。

openGL-建立清單(詳解) @ 奇怪的(´・ω・`)增加了的部落格 :: 痞客邦 :: (pixnet.net)

openGL-旋轉茶壺(詳解) @ 奇怪的(´・ω・`)增加了的部落格 :: 痞客邦 :: (pixnet.net)

openGL-鍵盤改變旋轉茶壺角度(詳解) @ 奇怪的(´・ω・`)增加了的部落格 :: 痞客邦 :: (pixnet.net)

openGL-特殊鍵更改背景顏色(詳解) @ 奇怪的(´・ω・`)增加了的部落格 :: 痞客邦 :: (pixnet.net)

openGL-滑鼠按下拖移旋轉茶壺(詳解) @ 奇怪的(´・ω・`)增加了的部落格 :: 痞客邦 :: (pixnet.net)


image

完整程式碼:(紅色的部分為這次所新增的,其他程式碼可以到上面點選超連結,下面有介紹) 完整程式碼:(下面有介紹)

#include "GL/freeglut.h"
#include "GL/glut.h"


float backgroundGray=0.0f;
float teapot_size=1.0f;

void My_Display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
    gluLookAt(0.0, 2.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);
    glColor3ud(255,0 ,0);
    glutWireTeapot(teapot_size);
    glutSwapBuffers();    
    
}

void My_Reshape(int  width, int  height)
{
    int aspect = width * 1.0f / height;
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glViewport(0,0,width, height);
    gluPerspective(60.0f, aspect, 0.1f, 10.0f);
}

int main(int argc, char** argv)
{
    glutInit(&argc, argv);
        
    glutInitDisplayMode( GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH);
    glutInitWindowPosition(100,100);
    glutInitWindowSize(600,600);
    glutCreateWindow("glut");
    glClearColor(backgroundGray, backgroundGray,backgroundGray,1.0f);
    glutReshapeFunc(My_Reshape);
    glutDisplayFunc(My_Display);
    glutMainLoop();
    return 0;    
}

glutReshapeFunc(My_Reshape);

改變視窗大小會執行的函數。


glMatrixMode(GL_PROJECTION);

指定目前運算矩陣為投影矩陣(Projection matrix)。


glLoadIdentity();

將目前的矩陣重設為單位矩陣。


glViewport(0,0,width, height);

將物體投射到視窗所在的位置。


gluPerspective(60.0f, aspect, 0.1f, 10.0f);

有兩種投影模式,透視、正交投影,這裡是透視投影,參數所代表的是(角度,長寬,前面的距離,後面的距離)


gluLookAt(0.0, 2.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);

分別是眼睛點、參考中心、上向量都是x,y,z,設相機位置為眼睛點,看相參考中心,上向量為相機的旋轉,左邊是x軸是-5,右邊是x軸為0。

imageimage


glColor3d(255,0 ,0);

茶壺的顏色RGB(0~255)。


glutWireTeapot(teapot_size);

畫茶壺大小為1.0。

 

arrow
arrow
    創作者介紹
    創作者 讀書小天地 的頭像
    讀書小天地

    書籍分享天地

    讀書小天地 發表在 痞客邦 留言(0) 人氣()