上一页 1 ··· 4 5 6 7 8 9 10 11 12 ··· 27 下一页
摘要: 在OpenGL中,如果想绘制一个多边形同时绘制其边界,可是先使用多边形模式GL_FILL绘制物体,然后使用多边形模式GL_LINE和不同的颜色再次绘制这个多边形。但是由于直线和多边形的光栅化方式不同,导致位于同一位置的多边形和直线的深度值并不相同,进而导致直线有时在多边形的里面,有时在多边形的外面,这种现象就是"Sitching"。 而Z-fighting主要是指当两个面共面时,二者的深度值一样,深度缓冲就不能清楚的将它们两者分离开来,位于后面的图元上的一些像素就会被渲染到前面的图元上,最终导致图象在帧与帧之间产生微弱的闪光。 阅读全文
posted @ 2015-06-12 14:13 BIT祝威 阅读(11264) 评论(1) 推荐(2) 编辑
摘要: 我玩过一款坦克游戏ArmadaTank(坦克舰队)几个月前我尝试用Unity3D重制这款游戏,已经可以玩起来了。重制版拥有所有原版的模型、关卡、武器、装备、碰撞、穿透。您可以到这里下载PC和Android版试玩。 阅读全文
posted @ 2015-06-05 13:54 BIT祝威 阅读(3065) 评论(13) 推荐(6) 编辑
摘要: 到上一篇为止,拾取一个VBO里的单个图元的问题已经彻底解决了。那么来看下一个问题:一个场景里可能会有多个VBO,此时每个VBO的gl_VertexID都是从0开始的,那么如何区分不同VBO里的图元呢?总结起来,Modern OpenGL可以利用gl_VertexID的存在,借助一点小技巧,实现拾取多个VBO内的任一图元的功能。不过这个方法显然只能拾取一个图元,就是Z缓冲中离屏幕最近的那个图元,不像射线一样能穿透过去拾取多个。 阅读全文
posted @ 2015-05-31 04:28 BIT祝威 阅读(2836) 评论(0) 推荐(1) 编辑
摘要: GL_FLAT模式下,各种类型的图元的颜色都是由绘制它的最后一个顶点的颜色给出的。我们只需在做Picking的绘制时,在GL_FLAT状态下绘制图元,就可以用glReadPixel()获取到应拾取的图元的最后一个顶点的编号。根据上一节的表格,很容易推算出此编号代表的图元。GLSL里的flat关键字。给in/out变量附加一个flat,就相当于Legacy OpenGL里调用了glShadeMode(GL_FLAT); 阅读全文
posted @ 2015-05-29 16:10 BIT祝威 阅读(3043) 评论(0) 推荐(0) 编辑
摘要: 这个思路的核心就是设计一个gl_VertexID与gl_FragColor之间的一一对应的函数。再加上我们能够用glReadPixel()获取屏幕上任意位置的颜色信息(gl_FragColor),这样就能够得到拾取到的顶点的gl_VertexID,即该顶点在VBO中的位置。这个方法支持的VBO的顶点数上限是(256*256*256*256=4294967296)。不过目前的显卡支持的VBO最大容量据此上限还差很多。所以放心使用好了。 阅读全文
posted @ 2015-05-28 13:06 BIT祝威 阅读(4826) 评论(2) 推荐(1) 编辑
上一页 1 ··· 4 5 6 7 8 9 10 11 12 ··· 27 下一页