我所拥有的:一个 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
...并试图像这样画它们:
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 数组是正确的(检查过。)
作业完成:我看到很多很接近的 SO 问题,但大多数都归结为线条或三角形网格,否则不太适用。有些与设置问题相关(已经消除,因为我的立方体画得很好。)对于其他非 SO 答案、教程等,类似的不太正确。
注意:我依赖于内置着色器(也就是说,我的应用程序中没有任何创建着色器代码。)
虽然我的最终结果几何不是立方体,但我可以在这里绘制一个基本的线框立方体作为概念验证。不过,再一次,不使用三角形或线条,因为我的最终结果不适合这些。
谁能给我任何指向示例代码的指针,这些示例代码可以完成我正在寻找的那种裸线段绘图?
谢谢!