gpt4 book ai didi

android - OpenGL (ES) -- glBindBuffer 抛出 IllegalArgumentException : remaining < size()

转载 作者:行者123 更新时间:2023-11-29 14:07:36 28 4
gpt4 key购买 nike

我已经制作了一个顶点缓冲区,在使用 glDrawArrays 时可以正确绘制,但是它们无法加载到 VBO 中。这是代码:


FloatBuffer circleBuffer = ByteBuffer.allocateDirect(numVertices * 3 *
4).order(ByteOrder.nativeOrder()).asFloatBuffer();

for (int j = 0; j < numVertices; j++) {
circleBuffer.put((float) (Math.cos(theta)));
circleBuffer.put((float) (Math.sin(theta)));
circleBuffer.put(1);
theta += 2 * Math.PI / (numVertices);
}

int[] buffer = new int[1];
int circleIndex=0;
gl11.glGenBuffers(1, buffer,0);
circleIndex = buffer[0];
gl11.glBindBuffer(GL11.GL_ARRAY_BUFFER, circleIndex);
gl11.glBufferData(GL11.GL_ARRAY_BUFFER, circleBuffer.capacity() * 4,
circleBuffer, GL11.GL_STATIC_DRAW);

我输出了buffer的容量是105,剩下的是0。我也试过把FloatBuffer重新赋值成Buffer。这里出了什么问题?谢谢!



ERROR/AndroidRuntime(7127): java.lang.IllegalArgumentException: remaining() < size
ERROR/AndroidRuntime(7127): at com.google.android.gles_jni.GLImpl.glBufferData(Native Method)

编辑——解决方案


buffer.flip();

最佳答案

一个 Java 异常,应该由不喜欢其参数的方法故意抛出。它扩展了 RuntimeException,这意味着它不需要被捕获。尽管是单数名称,但可以表示更多参数之间未满足的约束。您使用和检查参数的次数越多,您就越会在方法调用中出现异常。在许多情况下,抛出 NullPointerException 的代码应该进行参数检查并抛出此异常,并附上适当的解释性消息。

关于android - OpenGL (ES) -- glBindBuffer 抛出 IllegalArgumentException : remaining < size(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5848981/

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