资源简介
该文件中包含多个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网络技术大赛复赛考试指导
相关资源
- librdkafka win7 64位 vs2015编译Release版本
- VS1053B编解码器的VDR分布式声音采集卡
- VS六种配色方案(工具-导入和导出设
- VS2012OpenGL配置所需要的全部libdllh文件
- 串口模拟器支持win10
- Visual Assist X for vs2005
- VisualSVN-VS2019-7.1.2破解版
- Visual_Assist_X VS2008专用
- Kvsc3.exe、Kvsc3.dll病毒查杀清除方法
- VisualSVN 6.0.4 破解版(支持VS2017)
- CVSNT中文完美稳定版
- AnkhSvn-2.6.12735 支持VS2010-VS2015 官方原版
- Visual Studio 2017企业版 Enterprise,专业版
- VS2017_Professional_15.5.7+密钥
- VS2010、VS2012、VS2013代码自动注释插件
- ArangoDB vs. JanusGraph vs. Neo4j vs. OrientDB
- 插件式GIS应用框架的设计与实现&mda
- 通过x264录制RGB屏幕视频vs2013工程,
- Microsoft Visual Studio 2017 Installer Project
- VSuite Ramdisk Server V4.6.7 真正破解版(修
- VSP波场分离的径向中值滤波方法
- 利用单端电气量的VSC-HVDC输电线路保护
- G726、G711、G711A转换为AAC
- VS2010 运行时库
- VMware vSphere 全系列序列号
- 中维JVS-C701/702采集卡驱动 v5.5.1.3 官方
- 基于OpenGL的仿蝗虫机器人三维动态仿
- 图形学 - OpenGL实现3种三维茶壶显示源
- AVWS11破解版
- 低级鼠标钩子VS源码、攻略及成品
评论
共有 条评论