我拥有的东西:A GLKViewController及其关联视图,它在预期的位置、比例、颜色等中绘制我的立方体对象(如果我想:旋转)。
*我想要的:而不是立方体,我想指定一个具有几何学的对象,它是一个顶点对数组,并说服GLKit (隐含的: OpenGL-ES-2)在我的视图空间中将每一对顶点画成线段。
注意:我的线段不形成线段,所以没有线段.我的线段不构成三角形作为网格(或任何其他几何学的一部分)。它们只是空间中的个别线段,彼此之间没有任何关系。想想“捡起来的棍子”之类的。
:,我创建了一个顶点对(GLKVector3)和顶点颜色(GLKVector4)的数组,如下所示:
lineVertices = calloc (verts, sizeof(GLKVector3));
colorVertices = calloc (verts, sizeof(GLKVector4));
lineVertices[index++] = GLKVector3Make(x, 0, z);
lineVertices[index++] = GLKVector3Make(x2, 0, z2);
// etc., snip
colorVertices[cIndex++] = GLKVector4Make(1, 0.0, 1, 1);
// etc., snip...and试图像这样画他们:
glEnable(GL_DEPTH_TEST);
glEnableVertexAttribArray(GLKVertexAttribPosition);
glVertexAttribPointer(GLKVertexAttribPosition, 2, // ** WRONG ** "2" should be "3"
GL_FLOAT, GL_FALSE, 0, lineVertices);
glEnableVertexAttribArray(GLKVertexAttribColor);
glVertexAttribPointer(GLKVertexAttribColor, 4,
GL_FLOAT, GL_FALSE, 0, colorVertices);
glDrawArrays(GL_LINES, 0, lineVertCount);
glDisableVertexAttribArray(GLKVertexAttribPosition);
glDisableVertexAttribArray(GLKVertexAttribColor);(所有这些代码都在正确的位置,正如使用相同基础结构的多维数据集对象正确绘制所证明的那样。)
当我尝试的时候,我得到了什么:我只画了一些线段,它们似乎指向每一个方向,而不是我希望看到的可爱的图案。我似乎看不出画的线段的图案。这就好像我得到了随机内存,除了我的lineVertices数组是正确的(选中)。
家庭作业完成了:,我看到了很多这样的问题,这些问题都很接近,但是大多数都是线条或者三角形网格,或者其他的不太适用。有些是与设置相关的问题(已经消除了,因为我的多维数据集画得很好)。类似的,不完全正确的其他非此即彼的答案,教程等。
注意:我依赖内置着色器(也就是说,我的应用程序中没有任何创建代码)。
虽然我的最终结果几何不是一个立方体,我可以画一个基本的线框立方体作为概念的证明,这里。再一次,没有使用三角形或线条,但,因为我的最终结果将不适合这些。
有人能给我提供一些指向示例代码的指针吗?这些代码是我正在寻找的那种裸线段绘图?
谢谢!
发布于 2013-05-28 00:08:05
噢,噢!(我讨厌发生这种事!)
在继续追踪这一点的同时,我遇到了this related SO question,他们说他们正在成功地画线。将该代码与我的代码进行比较,我注意到我错误地将“每个顶点的坐标数”从3(正确的值)更改为2。似乎我犯了一个错误,把这个值误认为是“每个几何图形的坐标数”(3表示三角形,2表示直线)。
一旦我修复了这个问题,我的线条的“随机性”就被理顺了,现在一切都很完美。
我本来打算撤回/删除这个问题,但决定放弃它,希望我的错误(和解决办法)能教给别人。我的错误代码,上面,是与更正注释。
顺便说一句,我注意到在另一篇文章中,“set”值被错误地设置为3(应该是0)。我评论道,希望他们能更新代码。
https://stackoverflow.com/questions/16780229
复制相似问题