opengl超级宝典_opengl超级宝典第八版_opengl超级宝典第七版

电脑杂谈  发布时间:2017-01-10 17:27:52  来源:网络整理

opengl超级宝典第八版_opengl超级宝典_opengl超级宝典第七版

标签:

1、渲染中的双缓冲:

使用但缓冲的时候,在渲染每一帧的绘图时,会对画板进行擦除然后在慢慢填充绘制,如果绘制时间过长的时候,就会出现闪烁的现象。为解决这个问题,所以引入双缓冲

双缓冲相当于,在显示的画板中重新创建另外一个画板,绘制的过程在另外的画板进行,绘制完成之后,将显示的画板的内容直接替换成另外一个画板的内容。opengl超级宝典这样呈现的过程中就不会出现闪烁的问题,即使是绘制的过程比较慢,最多就是出现顿的现象

在例子中渲染的RenderScene()函数中,每次渲染结束之后都会调用glutSwapBuffers()进行缓冲区的切换渲染

void RenderScene(){
	glClearColor(0.0f, 0.0f, 1.0f, 0.0f);
	glClear(GL_COLOR_BUFFER_BIT);

	glClearColor(1.0f,0.0f,0.0f,0.0f);
	glScissor(100,100,600,400);
	glEnable(GL_SCISSOR_TEST);
	glClear(GL_COLOR_BUFFER_BIT);

	glClearColor(0.0f,1.0f,0.0f,0.0f);
	glScissor(200,200,400,200);
	glClear(GL_COLOR_BUFFER_BIT);

	glDisable(GL_SCISSOR_TEST);

	glutSwapBuffers();
}

2、绘制过程:

图元最终的呈现其实是通过一个管线的过程,呈现一个图元,我们必定需要顶点数据,而且需要最终填充成像素的着色器。通过这两个着色器渲染成最终像素的过程就是图形的管线。

OpenGL2.0之后使用可编程的管线,也就是渲染图元的时候,我们是需要通过shader程序进行的,一般会分成两个过程,一个是顶点着色器的处理,一个是片段着色器的处理。

顶点着色器处理客户机输入的数据,应用变换,数学计算(光照,颜色,位移),逐顶点处理

片段着色器会输出我们最终在屏幕看到的像素颜色,逐像素处理。

Shader的数据传递:顶点属性数据,uniform数据,纹理数据

顶点数据:顶点位置,顶点颜色,纹理坐标,光照法线。这些数据一般都是传入顶点着色器进行处理的。

uniform数据:和属性数据不同的是,片段着色器中也可以有Uniform变量。Uniform变量在改变的时候是逐批次的不是逐顶点的。常用于设置变换矩阵

纹理数据:纹理数据提供给片段着色器进行采样,根据纹理坐标应用于图元的像素中

输出变量:可以将顶点着色器的传递到片段着色器中

3、坐标系和投影

GLFrustum:使用该类作为投影矩阵的容器

正投影:通过调用GlFrustum::SetOrthographic(xMin,xMax,yMin,yMax,zMin,zMax)的函数来对最终绘制的图像进行投影。该投影一般用于2D绘图。

技术分享技术分享技术分享

透视投影:通过调用GLFrustum::SetPerspective(fFov,fAspect,fNear,fFar)的函数来获取一个投影矩阵。

fFov:在垂直方向上的视觉角度

fAspect:窗口宽高的纵横比

fNear:近裁剪面的距离

fFar:远裁剪面的距离

技术分享

opengl超级宝典第八版_opengl超级宝典_opengl超级宝典第七版

4、一套现成封装好的Shader管理器

我们使用GLTools中的GLShaderManager进行进行渲染。自带了很多预定义的Shader。opengl超级宝典

在使用之前必须先 初始化:shaderManager.InitializeStockShaders()


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-25410-1.html

相关阅读
发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

热点图片
拼命载入中...