随笔- 191
文章- 0
评论- 35
阅读-
21万
随笔分类 - opengl, glsl技术
opengl, glsl算法
三维场景的渲染优化
摘要:(一) 有效的性能评测 对于任何一个3D应用程序来说,追求场景画面真实感是一个无止尽的目标,其结果就是让我们的场景越来越复杂,模型更加精细,这必然给图形硬件带来极大的负荷以致于无法达到实时绘制帧率。因此,渲染优化是必不可少的。在渲染优化之前,我们需要对应用程序性能进行系统的评测,找出瓶颈,对症下药。对于3D应用程序来说,影响性能的十分多,同时不同的硬件配置条件下,瓶径也会有所不同。因此,对应用程序进行有效的性能评测,不仅需要对整个渲染管线原理有深入地了解,此外借助一些评测工具能让我们的工作事倍功半。我们知道渲染流水线的速度是由最慢的阶段决定首先...
阅读全文
什么是OpenGL中的深度、深度缓存、深度测试
摘要:什么是OpenGL中的深度、深度缓存、深度测试?2011-05-01 10:50:32|分类: 默认分类 |标签:opengl |字号大中小订阅 1)直观理解深度其实就是该象素点在3d世界中距离摄象机的距离,深度缓存中存储着每个象素点(绘制在屏幕上的)的深度值!深度测试决定了是否绘制较远的象素点(或较近的象素点),通常选用较近的,而较远优先能实现透视的效果!!!2)Z值(深度值)、Z buffer(深度缓存) 下面先讲讲Z坐标。Z坐标和X、Y坐标一样。在变换、裁减和透视除法后,Z的范围为-1.0~1.0。DepthRange映射指定Z坐标的变换,这与用于将X和Y映射到窗口坐标的视口变换类似,但
阅读全文
抗锯齿
摘要:1、SSAA--SuperSampling Anti-Aliasing 即超级取样抗锯齿模式。这是最基本的抗锯齿模式,实现原理是渲染时把画面按照显示器分辨率的若干倍放大,如在1024x768分辨率上开启2xSSAA,GPU会先渲染2048x1536 图像,再“塞进”1024x768的边框里成型,将画面精细度提升一倍,毫无疑问会改善边缘锯齿情况。但是众所周知,高分辨率图形的渲染会极大的消耗 GPU运算资源和显存容量及带宽,因此SSAA资源消耗极大,即使是最低的2x也未必就能轻易承受。 2、MSAA--MultiSampling Anti-Aliasing 即多重取样抗锯齿模式。这是nVidia在
阅读全文
纹理压缩
摘要:在OpenGL中使用纹理压缩OpenGL 2008-07-14 18:08:45 阅读25 评论0 字号:大中小订阅 纹理压缩技术已经广泛应用在各种3D游戏之中,它们包括:DXTC(Direct X Texture Compress,DirectX纹理压缩,以S3TC为基础)、S3TC(S3 Texture Compress,S3纹理压缩,仅支持S3显卡)、VTC(Volume Texture Compression,体积纹理压缩)、PTC(Palletized Texture Compression,并行纹理压缩)、VQTC(Vector-Quantization Texture Compr
阅读全文
vbo
摘要:根据OpenGL所支持VBO的情况,有三种方式执行渲染(1)支持OpenGL 1.5,使用标准的VBO函数 // 设置顶点缓冲 glGenBuffers(1, &iVertexBuffer); glBindBuffer(GL_ARRAY_BUFFER, iVertexBuffer); glBufferData(GL_ARRAY_BUFFER, sizeof(vertex_list), vertex_list, GL_STATIC_DRAW); // 设置索引缓冲 glGenBuffers(1, &iIndexBuffer); glBindBuffer(GL_ELEMENT_ARRAY_BUFF
阅读全文
GPU深度挖掘
摘要:介绍Frame Buffer Object(FBO)扩展,被推荐用于把数据渲染到纹理对像。相对于其它同类技术,如数据拷贝或交换缓冲区等,使用FBO技术会更高效并且更容易实现。在这篇文章中,我将会快速地讲解一下如何来使用这一扩展,同时会介绍一些在使用过程中我们要注意的地方。学会该技术后,你便可以把一些渲染到纹理(render to texture)的功能加入到你的程序中,实现更快速的运行。建立和OpenGL中的其它对像一样,如纹理对像(texture object), 像素缓冲对像(pixel buffer objects), 顶点缓冲对像(vertex buffer object)等,在使用一
阅读全文
VBO, PBO与FBO
摘要:OpenGL Pixel Buffer Object (PBO)Related Topics: Vertex Buffer Object (VBO), Frame Buffer Object (FBO) Download: pboUnpack.zip, pboPack.zip OverviewCreating PBOMapping PBOExample: Streaming Texture Uploads with PBOExample: Asynchronous Readback with PBOOverview OpenGL PBO OpenGL ARB_pixel_buffer_obje
阅读全文
opengl教程
摘要:大家好。现在因为参加工作的关系,又是长时间没有更新。趁着国庆的空闲,总算是又写出了一课。我感觉入门的知识已经快要介绍完毕,这课之后再有一课,就可以告一段落了。以后我可能会写一些自己在这方面的体会,做一份进阶课程。现在即将放出的是第十二课的内容。首先还是以前课程的连接:第一课,编写第一个OpenGL程序第二课,绘制几何图形第三课,绘制几何图形的一些细节问题第四课,颜色的选择第五课,三维的空间变换第六...
阅读全文
透明排序原理
摘要:首先阐明什么是深度缓存? 是一张二维数组,一般情况是32位。 根据深度来判断是否送入pipeline中的颜色缓存。 可以自己定义判断规则。2.how to use that? 深度缓存: 可以用来绘制半透明图像。 绘制半透明图像的时候,启用混合,把深度设置为只读,启用深度测试。 深度测试:将确定当前的透明像素是否被送到颜色缓冲里面。 从而确定哪一部分需要重绘。3.what is the prob...
阅读全文
深入了解OpenGL——颜色混合
摘要:其实颜色混合用到的场合很多,比如多张图片的合成,动画游戏中的一些画面特效等都可以通过颜色混合进行实现。最常用的混合方式就是实现物体与背 景的半透明效果。另外,在制作2D游戏时颜色混合可以用来通过制作目标物体的蒙板实现移动。通过蒙板来消除旧位置的物体对象可以不必重绘当前整帧内容,而 仅仅是发生变化的那些物体。为了各位从事iPhone开发的考虑。后面的代码例子对OpenGL API的使用都会用Open...
阅读全文
3D编程的4个境界
摘要:3D编程的4个境界很久没来这了,也一直想写点东西,可惜没时间写。昨天突然想到点东西,想写下来。说说3D编程的4个境界吧,由于我个人水平和见识有限,以及时间比较仓促,说的不对不好,还请谅解和指正。第一阶段:初学者阶段。这个阶段主要是熟悉3D图形学的基本原理,和基本api的使用。特别是对于空间的变换,矩阵的原理要有非常清楚的认识。能够用简单的资源,做一个简单的demo,基本上就是达到了。这个阶段比较简...
阅读全文
3D纹理
摘要:3D纹理的缘起 现有的纹理贴图,就是将各种不同的2D平面图形贴在3D物体的表面上,同种物体使用同样的2D纹理,以此来简化表现不同种类物体的不同表面效果,既节省了系统存储和物体表面信息的资源,又比较真实地反映出了客观(或想象)的世界。2D纹理就是一张张的平面图形(往往是正方形的),因此只包括一个平面上的像素点(称图素,Texel),每个点在纹理内部只有二维的相对坐标(贴在物体上后就有三维的实际坐...
阅读全文
opengl纹理
摘要:6月10日OpenGL红宝书【纹理映射】(2)9.4 纹理对象使用纹理对象来存储纹理数据的步骤:1) 生成纹理对象名称2) 将纹理对象绑定到纹理数据(包括图像数据数组和纹理属性), 即创建纹理对象.3) 如果OpenGL实现高性能纹理工作集, 应检查是否有足够的空间来存储所有的纹理对象. 如没有足够空间, 应设置每个纹理对象的优先级, 以确保最常用的纹理留在工作集中4) 绑定和重新绑定纹理对象, ...
阅读全文
关于OPENGL纹理
摘要:纹理是增强计算机生成的三维图像的真实感的有力工具。Microsoft® Direct3D®支持广泛的纹理特性,并使开发人员可以很方便地使用高级纹理技术。本节讲述如何使用纹理。纹理的基本概念纹理坐标纹理过滤纹理资源纹理环绕纹理混合表面 以下主题将更详细地介绍另外的纹理功能。Mipmap的自动生成自动纹理管理压缩纹理资源使用纹理时需要考虑的硬件问题立体纹理资源 要提高性能,可以考虑...
阅读全文
用opengl实现多个视口
摘要:lClearColor(1.0,1.0,1.0,0.1);//仅仅设置清屏颜色,并不实际执行操作,是一个状态值glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);//把颜色缓存清为glClearColor()设置的颜色,颜色缓存指的是整个屏幕,不是指的视口,是一个动作glViewport(0, 0, 100, 100);glBegin(GL_LINES...
阅读全文
关于透明和不透明排序问题
摘要:首先阐明什么是深度缓存? 是一张二维数组,一般情况是32位。 根据深度来判断是否送入pipeline中的颜色缓存。 可以自己定义判断规则。2.how to use that? 深度缓存: 可以用来绘制半透明图像。 绘制半透明图像的时候,启用混合,把深度设置为只读,启用深度测试。 深度测试:将确定当前的透明像素是否被送到颜色缓冲里面。 从而确定哪一部分需要重绘。3.what is the prob...
阅读全文
符号文件——Windows 应用程序调试必备
摘要:windows 2009-10-08 10:37:02 阅读59 评论0 字号:大中小订阅 符号文件——Windows 应用程序调试必备作者:Generad USam一、何谓符号文件? 符号文件(Symbol Files)是一个数据信息文件,它包含了应用程序二进制文件(比如:EXE、DLL等)调试信息,专门用来作调试之用,最终生成的可执行文件在运行时并不需要这个符号文件,...
阅读全文
glsl顶点着色和片元着色的管道流程
摘要:GLSL TutorialPipeline Overview The following figure is a (very) simplified diagram of the pipeline stages and the data that travels amongst them. Although extremely simplified it is enough to present ...
阅读全文
opengl像素格式管理
摘要:1、Windows下的调色板OpenGL可以使用16色、256色、64K和16M真彩色。真彩模式下不需要调色板,而在16色模式下根本不可能得到较为满意的效果,因此对OpenGL而言,调色板只有在256色模式下才有意义。我们知道,Windows把调色板分为系统调色板和逻辑调色板。每个应用程序都拥有一套自己的逻辑调色板(或使用缺省调色板),当该应用程序拥有键盘输入焦点时可以最多使用从16M种色彩中选取...
阅读全文