資源簡介
該文件中包含多個OpenGL的簡單實用例子,從最簡單的繪圖到比較復雜一點的渲染等。

代碼片段和文件信息
//?Shape.cpp?:?定義控制臺應用程序的入口點。
//
#include?“stdafx.h“
enum?VAO_IDs?{?Triangles?NumVAOs?};
enum?Buffer_IDs?{?ArrayBuffer?NumBuffers?};
enum?Attrib_IDs?{?vPosition?=?0?vColor=1};
GLuint?VAOs[NumVAOs];?//定義GLuint類型的頂點數組
GLuint?Buffers[NumBuffers];?//定義GLuint類型的緩存數組
const?GLuint?NumVertices?=?6;?//頂點的個數
int?CHOICE?=?0;?//選擇融混方式
//OpenGL的初始化過程
void?init(void)?{
//調用頂點著色器和片元著色器文件
ShaderInfo?shader[]?=?{
{?GL_VERTEX_SHADER?“GLSL.vert“?}
{?GL_FRAGMENT_SHADER?“GLSL.frag“?}
{?GL_NONE?NULL?}
};
GLuint?program?=?LoadShaders(shader);
glUseProgram(program);
glGenVertexArrays(NumVAOs?VAOs);?//返回NumVAOs個未使用的對象名到數組VAOs中,用作頂點數組對象(分配頂點數組對象名稱)
glBindVertexArray(VAOs[Triangles]);?//將頂點數組對象和其名稱關聯起來(綁定頂點數組對象)
//頂點數組
GLfloat?vertices[NumVertices][2]?=?{
//正五邊形
{?-0.6?-0.6?}?{?0.6?-0.6?}?{?0.0?0.8?}
{?0.6?0.6?}?{?-0.6?0.6?}?{?0.0?-0.8?}
};
GLfloat?colors[NumVertices][4]?=?{
{?1.0?0.0?0.0?0.5?}
{?1.0?0.0?0.0?0.5?}
{?1.0?0.0?0.0?0.5?}
{?0.0?1.0?0.0?0.3?}
{?0.0?1.0?0.0?0.3?}
{?0.0?1.0?0.0?0.3?}
};
glGenBuffers(NumBuffers?Buffers);?//返回NumBuffers個未使用的緩存對象名稱,并保存到Buffers數組中(分配緩存對象名稱)
glBindBuffer(GL_ARRAY_BUFFER?Buffers[ArrayBuffer]);?//指定當前激活的緩存對象,緩存對象類型為GL_ARRAY_BUFFER(綁定頂點緩存對象)
glBufferData(GL_ARRAY_BUFFER?sizeof(vertices)+sizeof(colors)?NULL?GL_STATIC_DRAW);
glBufferSubData(GL_ARRAY_BUFFER?0?sizeof(vertices)?vertices);
glBufferSubData(GL_ARRAY_BUFFER?sizeof(vertices)?sizeof(colors)?colors);
glVertexAttribPointer(0?2?GL_FLOAT?GL_FALSE?0?NULL);
glVertexAttribPointer(1?4?GL_FLOAT?GL_FALSE?0?(const?GLvoid?*)sizeof(vertices));
glEnableVertexAttribArray(0);
glEnableVertexAttribArray(1);
glClearColor(0.4?0.5?0.7?1.0);
}
//使用OpenGL進行渲染
void?display()?{
glClear(GL_COLOR_BUFFER_BIT);?//清除幀緩存的數據再進行渲染,清除指定的緩存數據并重設為當前的清除值,GL_COLOR_BUFFER_BIT為顏色緩存清除
glBindVertexArray(VAOs[VAO_IDs::Triangles]);?//選擇作為頂點數據使用的頂點數組,并激活
//開啟融混
glEnable(GL_BLEND);
if?(CHOICE?==?1)
{
glBlendFunc(GL_SRC_ALPHA?GL_ONE_MINUS_SRC_ALPHA);?//第一個為源融混參數的計算方式,第二個為目標融混參數的計算方式
glBlendEquation(GL_FUNC_ADD);?//幀緩存和源數據顏色混合方式
}
if?(CHOICE?==?2)
{
glBlendFunc(GL_SRC_ALPHA?GL_ONE_MINUS_SRC_ALPHA);
glBlendEquation(GL_FUNC_SUBTRACT);
}
if?(CHOICE?==?3)
{
glBlendFunc(GL_SRC_COLOR?GL_DST_COLOR);
glBlendEquation(GL_MAX);
}
if?(CHOICE?==?4)
{
glBlendFunc(GL_SRC_ALPHA?GL_DST_ALPHA);
glBlendEquation(GL_MIN);
}
if?(CHOICE?==?5)
{
glBlendFunc(GL_DST_COLOR?GL_ONE_MINUS_DST_COLOR);
glBlendEquation(GL_FUNC_REVERSE_SUBTRACT);
}
glShadeModel(GL_FLAT);
//分別繪制兩個三角形
glDrawArrays(GL_TRIANGLES?0?NumVertices/2);??//獨立三角形
glDrawArrays(GL_TRIANGLES?3?NumVertices?/?2);??//獨立三角形
glFlush();?//強制之前的OpenGL命令立即執行,這樣可以保證它們在一定時間內全部完成
}
void?reshape(int?widthint?height)
{
glViewport(0?0?(GLsizei)width?(GLsizei)height);
glMatrixMode(GL_PROJECTION);
glLoadIdentit
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2018-05-22?17:47??0918150117楊小倩\
?????目錄???????????0??2018-05-19?15:26??0918150117楊小倩\Blending\
?????目錄???????????0??2018-05-19?15:26??0918150117楊小倩\Blending\Blending\
?????文件????????4568??2018-05-19?15:25??0918150117楊小倩\Blending\Blending\Blending.cpp
?????文件????????4722??2018-04-28?20:04??0918150117楊小倩\Blending\Blending\Blending.vcxproj
?????文件????????1698??2018-04-28?20:04??0918150117楊小倩\Blending\Blending\Blending.vcxproj.filters
?????文件????????2980??2018-03-14?15:10??0918150117楊小倩\Blending\Blending\LoadShaders.cpp
?????文件????????1224??2018-03-14?15:09??0918150117楊小倩\Blending\Blending\LoadShaders.h
?????文件?????????171??2018-04-28?20:29??0918150117楊小倩\Blending\Blending\glsl.frag
?????文件?????????183??2018-04-28?20:29??0918150117楊小倩\Blending\Blending\glsl.vert
?????文件?????????214??2018-04-28?19:12??0918150117楊小倩\Blending\Blending\stdafx.cpp
?????文件?????????528??2018-03-14?15:08??0918150117楊小倩\Blending\Blending\stdafx.h
?????文件?????????236??2018-04-28?19:12??0918150117楊小倩\Blending\Blending\targetver.h
?????文件?????????970??2018-04-28?19:12??0918150117楊小倩\Blending\Blending.sln
?????目錄???????????0??2018-05-22?15:32??0918150117楊小倩\Camera\
?????目錄???????????0??2018-05-22?15:32??0918150117楊小倩\Camera\Camera\
?????文件????????7716??2018-05-22?15:29??0918150117楊小倩\Camera\Camera\Camera.cpp
?????文件????????5021??2018-05-22?15:30??0918150117楊小倩\Camera\Camera\Camera.vcxproj
?????文件????????2075??2018-05-22?15:30??0918150117楊小倩\Camera\Camera\Camera.vcxproj.filters
?????文件????????2980??2018-03-14?15:10??0918150117楊小倩\Camera\Camera\LoadShaders.cpp
?????文件????????1224??2018-03-14?15:09??0918150117楊小倩\Camera\Camera\LoadShaders.h
?????文件????????1503??2018-05-22?15:28??0918150117楊小倩\Camera\Camera\ReadMe.txt
?????文件?????????130??2011-02-21?21:45??0918150117楊小倩\Camera\Camera\primitive_restart.fs.glsl
?????文件?????????300??2011-02-21?21:45??0918150117楊小倩\Camera\Camera\primitive_restart.vs.glsl
?????文件?????????212??2018-05-22?15:28??0918150117楊小倩\Camera\Camera\stdafx.cpp
?????文件?????????719??2018-04-23?20:54??0918150117楊小倩\Camera\Camera\stdafx.h
?????文件?????????236??2018-05-22?15:28??0918150117楊小倩\Camera\Camera\targetver.h
?????文件????????3730??2018-04-20?10:49??0918150117楊小倩\Camera\Camera\vbm.cpp
?????文件????????1473??2018-04-20?10:50??0918150117楊小倩\Camera\Camera\vbm.h
?????文件???????16063??2018-04-20?10:50??0918150117楊小倩\Camera\Camera\vmath.h
?????文件?????????393??2018-04-20?10:50??0918150117楊小倩\Camera\Camera\vutils.h
............此處省略90個文件信息
- 上一篇:黑馬32期(1).txt
- 下一篇:2018huawei網絡技術大賽復賽考試指導
評論
共有 條評論