首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用GLKit绘制线(线框)?

如何使用GLKit绘制线(线框)?
EN

Stack Overflow用户
提问于 2013-05-27 20:35:00
回答 1查看 1.3K关注 0票数 0

我拥有的东西:A GLKViewController及其关联视图,它在预期的位置、比例、颜色等中绘制我的立方体对象(如果我想:旋转)。

*我想要的:而不是立方体,我想指定一个具有几何学的对象,它是一个顶点对数组,并说服GLKit (隐含的: OpenGL-ES-2)在我的视图空间中将每一对顶点画成线段。

注意:我的线段不形成线段,所以没有线段.我的线段不构成三角形作为网格(或任何其他几何学的一部分)。它们只是空间中的个别线段,彼此之间没有任何关系。想想“捡起来的棍子”之类的。

,我创建了一个顶点对(GLKVector3)和顶点颜色(GLKVector4)的数组,如下所示:

代码语言:javascript
复制
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试图像这样画他们:

代码语言:javascript
复制
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数组是正确的(选中)。

家庭作业完成了:,我看到了很多这样的问题,这些问题都很接近,但是大多数都是线条或者三角形网格,或者其他的不太适用。有些是与设置相关的问题(已经消除了,因为我的多维数据集画得很好)。类似的,不完全正确的其他非此即彼的答案,教程等。

注意:我依赖内置着色器(也就是说,我的应用程序中没有任何创建代码)。

虽然我的最终结果几何不是一个立方体,我可以画一个基本的线框立方体作为概念的证明,这里。再一次,没有使用三角形或线条,但,因为我的最终结果将不适合这些。

有人能给我提供一些指向示例代码的指针吗?这些代码是我正在寻找的那种裸线段绘图?

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2013-05-28 00:08:05

噢,噢!(我讨厌发生这种事!)

在继续追踪这一点的同时,我遇到了this related SO question,他们说他们正在成功地画线。将该代码与我的代码进行比较,我注意到我错误地将“每个顶点的坐标数”从3(正确的值)更改为2。似乎我犯了一个错误,把这个值误认为是“每个几何图形的坐标数”(3表示三角形,2表示直线)。

一旦我修复了这个问题,我的线条的“随机性”就被理顺了,现在一切都很完美。

我本来打算撤回/删除这个问题,但决定放弃它,希望我的错误(和解决办法)能教给别人。我的错误代码,上面,是与更正注释。

顺便说一句,我注意到在另一篇文章中,“set”值被错误地设置为3(应该是0)。我评论道,希望他们能更新代码。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16780229

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档