五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

OpenGL實例教程03:繪制三角形

2023-02-14 10:44 作者:阿西拜-江西  | 我要投稿

我們在哪?

  • 通過實例1,我們獲得了一個支持OpenGL的窗口。

  • 通過實例2,我們初始化了OpenGL的函數(shù)指針,指向了顯卡驅(qū)動中的具體實現(xiàn),于是我們可以通過OpenGL代碼讓顯卡執(zhí)行繪制任務了。在實例1準備的窗口上繪制了兩個點。

  • 現(xiàn)在需要繪制一個三角形。

如何繪制三角形?

有了前面的準備工作,我們現(xiàn)在的任務非常簡單,繪制三角形和繪制點本質(zhì)上差不多,只是數(shù)據(jù)和使用數(shù)據(jù)繪制的方式(狀態(tài)機的某個狀態(tài))不同。

  • 準備數(shù)據(jù)(為了簡單起見,將數(shù)據(jù)都設(shè)置在-1到1之間)

    • Vector3f Vertices[3];
      Vertices[0] = Vector3f(-0.5f, -0.5f, 0.0f);
      Vertices[1] = Vector3f(0.5f, -0.5f, 0.0f);
      Vertices[2] = Vector3f(0.0f,?0.5f, 0.0f);

  • 調(diào)用OpenGL函數(shù),以三角形的方式解讀數(shù)據(jù)并繪制

    • glDrawArrays(GL_TRIANGLES, 0, 3);

代碼展示:

#include "../include/glew-2.1.0/glew.h"
#include "../include/freeglut3.4/freeglut.h"
#include "../include/ogldev_math_3d.h"

GLuint VBO;

static void RenderSceneCB()
{
 ? ?glClear(GL_COLOR_BUFFER_BIT); 

 ? ?
 ? ?glEnableVertexAttribArray(0); 
 ? ?glBindBuffer(GL_ARRAY_BUFFER, VBO);
 ? ?glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, /*0*/sizeof(GL_FLOAT)*3, 0);

 ? ?glDrawArrays(GL_TRIANGLES, 0, 3);//以三角形的方式解讀數(shù)組中的數(shù)據(jù),從0開始取3個頂點

 ? ?glDisableVertexAttribArray(0);

 ? ?glutSwapBuffers(); ? ? ? ?
}

static void InitializeGlutCallbacks()
{
 ? ?glutDisplayFunc(RenderSceneCB);
}

static void CreateVertexBuffer()
{
 ? ?Vector3f Vertices[3];// 包含3個頂點數(shù)據(jù)的數(shù)組

 ? ?Vertices[0] = Vector3f(-0.5f, -0.5f, 0.0f); //左下
 ? ?Vertices[1] = Vector3f(0.5f, -0.5f, 0.0f); ?//右下
 ? ?Vertices[2] = Vector3f(0.0f, 0.5f, 0.0f); ? //中上

 ? ?glGenBuffers(1, &VBO);
 ? ?glBindBuffer(GL_ARRAY_BUFFER, VBO);
 ? ?glBufferData(GL_ARRAY_BUFFER, sizeof(Vertices), Vertices, GL_STATIC_DRAW);
}

int main(int argc, char** argv)
{
 ? ?glutInit(&argc, argv);

 ? ?glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH);

 ? ?glutInitWindowSize(1024, 768); ? ?
 ? ?glutInitWindowPosition(100, 100); ? 
 ? ?glutCreateWindow("Tutorial 03"); ? ?

 ? ?GLenum res = glewInit();
 ? ?if (res != GLEW_OK) {
 ? ? ? ?fprintf(stderr, "Error: '%s'\n", glewGetErrorString(res));
 ? ? ? ?return 1;
 ? ?}

 ? ?CreateVertexBuffer();
 ? ?glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
 ? ?InitializeGlutCallbacks();
 ? ?glutMainLoop();
}

運行效果:



OpenGL實例教程03:繪制三角形的評論 (共 條)

分享到微博請遵守國家法律
蒙城县| 汨罗市| 黔西县| 江北区| 合作市| 松江区| 海安县| 沭阳县| 道孚县| 临夏市| 望谟县| 怀安县| 南华县| 那曲县| 都匀市| 堆龙德庆县| 达日县| 青铜峡市| 彩票| 瓮安县| 潮安县| 义乌市| 阳高县| 甘泉县| 荥经县| 丹凤县| 五家渠市| 望奎县| 陵水| 丰顺县| 江阴市| 宽城| 黑水县| 南丰县| 科技| 四子王旗| 九龙县| 浪卡子县| 栖霞市| 图木舒克市| 大悟县|