我正在研究我的学校项目并开始它。提供了一个框架,我设法加载SGF模型并显示它,但当我想使用另一个着色器从顶点创建一个简单的纹理地板时,它只显示模型(编译后,地板可见0.5秒但后来消失)有什么建议吗?
public void display(GLAutoDrawable drawable) {
final GL3 gl = drawable.getGL().getGL3();
loader.setUniformMatrix("projection", projection);
gl.glClear(GL3.GL_COLOR_BUFFER_BIT | GL3.GL_DEPTH_BUFFER_BIT);
myTexture.bind(gl, modeling, "my_texture");
myTexture.bind(gl, modeling, "my_texture2");
myTexture.bind(gl, program, "my_texture");
myTexture.bind(gl, program, "my_texture2");
Mat4 mv = MatrixMath.lookAt(this.eyeX,this.eyeY,this.eyeZ,this.at,this.up);
program.setUniformMatrix("model_view", mv);
program.use(gl);
gl.glDrawArrays(GL3.GL_TRIANGLES, 0, numVertices);
// 2nd part
// modeling.setUniformMatrix("model_view", mv);
modeling.setUniformMatrix("model_view", mv);
modeling.use(gl);
for (Map.Entry<String, VertexBufferObject> entry : vboHashMap.entrySet()) {
String key = entry.getKey();
entry.getValue().bind(gl);
gl.glDrawArrays(GL3.GL_TRIANGLES, 0, SGFLoader.getNumVertices(key));
}
}
当我在第二部分(负责加载模型)之后删除线条时,木板是可见的,否则它只会渲染模型。
任何sugestions?
答案 0 :(得分:1)
看起来你没有在display()方法中绑定地板的顶点数组。我猜你在设置一切时绑定它一次,但忘记每帧再次绑定它,这可以解释为什么它会在几分之一秒内闪烁。
OpenGL不是面向对象的。当你致电glDrawArrays
时,它会绘制你最后绑定的数组。