jogl - 如何创建 VAO 和 VBO 以与 JOGL 一起使用?
问题描述
我读了这个stackoverflow 答案。并尝试运行那里给出的代码。但我得到的只是一个粉红色的屏幕。我得出的结论是问题出在 init() 方法上。我试图了解 VAO-s 和 VBO-s 是如何工作的,但我仍然不明白。大多数关于 JOGL 的示例要么跳过 VAO、VBO 部分,要么跳过带有 VAO 或 VBO 的部分,都非常复杂。有人可以告诉我我在这里做错了什么吗?:
GL3 gl = drawable.getGL().getGL3();
gl.glEnableClientState(GL2.GL_VERTEX_ARRAY);
gl.glEnable(GL2.GL_DEPTH_TEST);
gl.glClearDepthf(10.0f);
gl.glClearColor(0.8f, 0.6f, 0.8f, 1.0f);
gl.glDepthFunc(GL2.GL_LEQUAL);
gl.glGenBuffers(2, buffers);
gl.glBindBuffer(GL2.GL_ARRAY_BUFFER, buffers.get(0));
gl.glBufferData(GL2.GL_ARRAY_BUFFER, 4 * 6 * 2, vertexFB, GL3.GL_STATIC_DRAW);
gl.glBindBuffer(GL2.GL_ARRAY_BUFFER, buffers.get(1));
gl.glBufferData(GL2.GL_ARRAY_BUFFER, 4 * 6 * 3, colorFB, GL2.GL_STREAM_DRAW);
gl.glGenVertexArrays(1, vertexArray);
gl.glBindVertexArray(vertexArray.get(0));
gl.glEnableVertexAttribArray(0);
gl.glBindBuffer(GL2.GL_ARRAY_BUFFER, buffers.get(0));
gl.glVertexAttribPointer(0, 2, GL.GL_FLOAT, false, 0, 0);
gl.glEnableVertexAttribArray(1);
gl.glBindBuffer(GL2.GL_ARRAY_BUFFER, buffers.get(1));
gl.glVertexAttribPointer(1, 3, GL.GL_FLOAT, false, 0, 0);
我想我以某种方式绑定了 VBO-s 错误的东西。
https://codeshare.io/299wD0完整代码和着色器。颜色不显示。它渲染矩形,但它是白色的。我可以注释掉着色器部分,我仍然得到白色矩形。似乎它没有使用着色器。
解决方案
推荐阅读
- react-native - 无法将没有 YogaNode 的子代添加到没有测量功能的父代(尝试添加 RCT 原始文本)
- kubernetes - 从外部访问 Kubernetes Play 仪表板
- c++ - 在带有边框的图像中提取子图像
- android - toLowerCase() 克隆以前的输入符号(仅在不在模拟器中的设备上)
- javascript - JavaScript (ES6):命名参数和默认值
- magento2 - 结构化数据徽标在 Google 搜索中不可见
- android - Gradle 可以在不运行它们的情况下构建 Instrumentation 测试吗?
- graphics - knitr:设置“out.height”突然不保持纵横比
- angular - 更新所有反应形式的值后,将在输入上调用什么事件
- ms-access - 访问 vba 发现类型不匹配错误