【发布时间】:2011-11-03 04:56:54
【问题描述】:
我正在使用 C++ 和 Qt 作为支持演员首次涉足 OpenGL。
在我的操场上实现主应用程序之外的功能,我试图从一个二维浮点数组中绘制一个网格表面。此二维数组的索引用于 x 和 z 坐标,值为 y 坐标。
目前我的实现有问题。没有创建一个实体表面,而是有明显的黑色间隙。
Google 快速向我展示了http://marc.blog.atpurpose.com/2009/10/24/programatically-generating-a-rectangular-mesh-using-single-gl_triangle_strip/,这与我的渲染方法非常相似。但是,我在绘制了一排三角形并在最后开始一个新的条带后终止了我的三角形条带。
下面是一些示例调试输出,显示了我正在创建的顶点:
glBegin
drawing vertex ( 0 , 2.76401 , 3 )
drawing vertex ( 0 , 1.82236 , 4 )
drawing vertex ( 1 , 1.55657 , 3 )
drawing vertex ( 1 , 3.82013 , 4 )
drawing vertex ( 2 , 3.1032 , 3 )
drawing vertex ( 2 , 2.77563 , 4 )
drawing vertex ( 3 , 2.2032 , 3 )
drawing vertex ( 3 , 4.49317 , 4 )
drawing vertex ( 4 , 0.469515 , 3 )
drawing vertex ( 4 , 1.48398 , 4 )
drawing vertex ( 5 , 0.301526 , 3 )
drawing vertex ( 5 , 0.606281 , 4 )
drawing vertex ( 6 , 1.12292 , 3 )
drawing vertex ( 6 , 1.98806 , 4 )
glEnd/glBegin
drawing vertex ( 0 , 4.31023 , 2 )
drawing vertex ( 0 , 2.76401 , 3 )
drawing vertex ( 1 , 3.64741 , 2 )
drawing vertex ( 1 , 1.55657 , 3 )
drawing vertex ( 2 , 2.48897 , 2 )
drawing vertex ( 2 , 3.1032 , 3 )
drawing vertex ( 3 , 4.54997 , 2 )
drawing vertex ( 3 , 2.2032 , 3 )
drawing vertex ( 4 , 0.11039 , 2 )
drawing vertex ( 4 , 0.469515 , 3 )
drawing vertex ( 5 , 1.12043 , 2 )
drawing vertex ( 5 , 0.301526 , 3 )
drawing vertex ( 6 , 4.27371 , 2 )
drawing vertex ( 6 , 1.12292 , 3 )
glEnd/glBegin
drawing vertex ( 0 , 0.818045 , 1 )
drawing vertex ( 0 , 4.31023 , 2 )
drawing vertex ( 1 , 0.886993 , 1 )
drawing vertex ( 1 , 3.64741 , 2 )
drawing vertex ( 2 , 0.612948 , 1 )
drawing vertex ( 2 , 2.48897 , 2 )
drawing vertex ( 3 , 4.69348 , 1 )
drawing vertex ( 3 , 4.54997 , 2 )
drawing vertex ( 4 , 3.56293 , 1 )
drawing vertex ( 4 , 0.11039 , 2 )
drawing vertex ( 5 , 2.22925 , 1 )
drawing vertex ( 5 , 1.12043 , 2 )
drawing vertex ( 6 , 0.15616 , 1 )
drawing vertex ( 6 , 4.27371 , 2 )
glEnd/glBegin
drawing vertex ( 0 , 1.84323 , 0 )
drawing vertex ( 0 , 0.818045 , 1 )
drawing vertex ( 1 , 2.28323 , 0 )
drawing vertex ( 1 , 0.886993 , 1 )
drawing vertex ( 2 , 1.1108 , 0 )
drawing vertex ( 2 , 0.612948 , 1 )
drawing vertex ( 3 , 3.72698 , 0 )
drawing vertex ( 3 , 4.69348 , 1 )
drawing vertex ( 4 , 4.41645 , 0 )
drawing vertex ( 4 , 3.56293 , 1 )
drawing vertex ( 5 , 4.69124 , 0 )
drawing vertex ( 5 , 2.22925 , 1 )
drawing vertex ( 6 , 3.11876 , 0 )
drawing vertex ( 6 , 0.15616 , 1 )
glEnd
还有我看到的截图(不同的顶点值):
我正在寻找有关我可能做错了什么的任何线索或见解。正如我所说,我对 OpenGL 很陌生。我没有使用单三角带网格方法,因为我相信它会在最终应用中出现问题。
更新:我玩弄了我的 y 值,并注意到只有当我使用从生成的 y 随机数时,渲染才会出现问题
qrand() / (float)(RAND_MAX) * 5.0f
使用常量值 (y = 1.0f)、y = x 或类似 y = z % 2 == 0 ? x : xMax - x 时。
【问题讨论】:
-
我有点放弃了我的 OpenGL 问题。没有合适的书籍资源来充分学习和理解正在发生的事情。找到了一个库,可以满足我 99% 的需求。