gpt4 book ai didi

android - 重复调用 glVertexPointer 和 glDraw

转载 作者:行者123 更新时间:2023-11-29 02:16:16 25 4
gpt4 key购买 nike

我在 Android 上使用 OpenGL ES 绘制一些形状,所以我有一些模型类可以从 .obj 文件加载顶点等。

然后每个模型都有一个 onDrawFrame() 方法,由渲染器调用以将其放置在场景中。

public void onDrawFrame(GL10 gl) {
gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
gl.glEnable(GL10.GL_CULL_FACE);
gl.glFrontFace(GL10.GL_CCW);
gl.glCullFace(GL10.GL_BACK);
gl.glVertexPointer(0, GL10.GL_FLOAT, 0, mVerts);
gl.glDrawElements(GL10.GL_TRIANGLES, mFaces.capacity(), GL10.GL_UNSIGNED_BYTE, mFaces);
gl.glDisableClientState(GL10.GL_VERTEX_ARRAY);
}

我现在的困惑是在哪里“重置”顶点指针(我认为),因为如果我尝试使用 2 个新顶点从新 glVertexPointer 创建任意线,并使用这些 ID 调用 glDrawElements(GL_LINES),该行似乎总是使用原始数据中的顶点 0 和 1。

我是否需要在一个由主场景以某种方式跟踪的主 glVertexPointer 中预定义我场景的所有顶点,并让每个模型只调用具有合适偏移量的 glDrawElements?或者我是否以某种方式清除指针?

最佳答案

不确定这是否能解决您的问题,但您的 glVertexPointer 行应该如下所示:

gl.glVertexPointer(3, GL10.GL_FLOAT, 0, mVerts);

因为每个顶点有 3 个坐标。除此之外,您应该能够使用上述方法设置一个新指针。

关于android - 重复调用 glVertexPointer 和 glDraw,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3612831/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com