资源简介
该文件中包含多个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网络技术大赛复赛考试指导
相关资源
- CVSNT 完整覆盖版防TortoiseCVS中文乱码
- OpenGL参考手册
- VisualStudioUninstaller vs卸载工具
- vSphere6.06.56.7通用版注册机
- ado数据库MFC图书管理系统vs2010
- Qt Creator opengl实现四元数鼠标控制轨迹
- OpenGL文档,api大全,可直接查询函数
- opengl轮廓字体源代码
- MFC读三维模型obj文件
- 利用OpenGL写毛笔字算法
- MFC中OpenGL面和体的绘制以及动画效果
- 基于OPENGL的光线跟踪源代码368758
- VC 实现三维旋转(源码)
- vs2005骑士巡游问题-分治法C
- 自编用openGL实现3D分形树,分形山
- OpenGL球形贴图自旋程序
- OpenGL导入贴图的Texture类
- 计算机图形学(openGL)代码
- 用OpenGL开发的机械臂运动仿真程序(
- OpenGL-3D坦克模拟
-
解决安装vs2012后vs2010 li
nk : fatal er - VMware vSphere 的 Intel 82579LM网卡驱动 最
- VisualSVN-VS2019V7.0解除时间限制
- OPENGL实现世界上最小的3D游戏
- librdkafka win7 64位 vs2015编译Release版本
- VS1053B编解码器的VDR分布式声音采集卡
- VS六种配色方案(工具-导入和导出设
- VS2012OpenGL配置所需要的全部libdllh文件
- 串口模拟器支持win10
- Visual Assist X for vs2005
评论
共有 条评论