我是一个使用VBOs渲染数据的新手,当我试图绘制一个立方体时,我遇到了一个非常严重的错误。< br >
这使得程序崩溃。我注意到当我在代码中注释掉渲染方法时,错误消失了,但我似乎找不到错误的来源,因为我是VBO的新手。代码在下面,感谢任何帮助。
package engine;
import static org.lwjgl.opengl.GL11.GL_COLOR_BUFFER_BIT;
import static org.lwjgl.opengl.GL11.GL_DEPTH_BUFFER_BIT;
import static org.lwjgl.opengl.GL11.GL_DEPTH_TEST;
import static org.lwjgl.opengl.GL11.glClear;
import static org.lwjgl.opengl.GL11.glEnable;
import static org.lwjgl.opengl.GL15.GL_ARRAY_BUFFER;
import static org.lwjgl.opengl.GL15.GL_STATIC_DRAW;
import static org.lwjgl.opengl.GL15.glBindBuffer;
import static org.lwjgl.opengl.GL15.glBufferData;
import static org.lwjgl.opengl.GL15.glGenBuffers;
import java.nio.FloatBuffer;
import java.nio.IntBuffer;
import org.lwjgl.BufferUtils;
import org.lwjgl.opengl.GL11;
import org.lwjgl.opengl.GL15;
public class Render{
private int amountOfVerts = 4;
private int vertexSize = 3;
private int colorSize = 1;
private FloatBuffer vertData, colorData;
private int handle, colorHandle;
public Render() {
vertData = BufferUtils.createFloatBuffer(amountOfVerts * vertexSize);
vertData.put(new float[]{0f,0f,0f, 100f,0f,0f, 100f,100f,0f, 0f,100f,0f});
vertData.flip();
colorData = BufferUtils.createFloatBuffer(amountOfVerts * colorSize);
colorData.put(new float[]{1,0,0});
colorData.flip();
handle = glGenBuffers();
glBindBuffer(GL_ARRAY_BUFFER, handle); //sets the current buffer to this
glBufferData(GL_ARRAY_BUFFER, vertData, GL_STATIC_DRAW); // fills the new buffer / stores data
glBindBuffer(GL_ARRAY_BUFFER, 0); // unbinds
colorHandle = glGenBuffers();
glBindBuffer(GL_ARRAY_BUFFER, colorHandle); //sets the current buffer to this
glBufferData(GL_ARRAY_BUFFER, colorData, GL_STATIC_DRAW); // fills the new buffer / stores data
glBindBuffer(GL_ARRAY_BUFFER, 0); // unbinds
}
public void render(){
glEnable(GL_DEPTH_TEST);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glBindBuffer(GL_ARRAY_BUFFER, handle);
GL11.glVertexPointer(vertexSize, GL11.GL_FLOAT, 0, 0L);
glBindBuffer(GL_ARRAY_BUFFER, colorHandle);
GL11.glColorPointer(colorSize, GL11.GL_FLOAT, 0, 0L);
GL11.glEnableClientState(GL11.GL_VERTEX_ARRAY);
GL11.glEnableClientState(GL11.GL_COLOR_ARRAY);
GL11.glDrawArrays(GL11.GL_QUADS, 0, amountOfVerts);
GL11.glDisableClientState(GL11.GL_COLOR_ARRAY);
GL11.glDisableClientState(GL11.GL_VERTEX_ARRAY);
}
}
package engine;
import static org.lwjgl.opengl.GL11.GL_MODELVIEW;
import static org.lwjgl.opengl.GL11.GL_PROJECTION;
import static org.lwjgl.opengl.GL11.glLoadIdentity;
import static org.lwjgl.opengl.GL11.glMatrixMode;
import org.lwjgl.LWJGLException;
import org.lwjgl.input.Keyboard;
import org.lwjgl.input.Mouse;
import org.lwjgl.opengl.Display;
import org.lwjgl.util.glu.GLU;
import org.lwjgl.util.vector.Vector3f;
public class Screen {
private Render r;
private Camera c;
private int w,h;
public Screen() {
init();
r = new Render();
c = new Camera(new Vector3f(0,0,0), 5f, 0.15f);
gameLoop();
}
public static void main(String[] args) {
Screen s = new Screen();
}
public void init(){
try{
Display.setDisplayModeAndFullscreen(Display.getDesktopDisplayMode());
w = Display.getDesktopDisplayMode().getWidth();
h = Display.getDesktopDisplayMode().getHeight();
Display.setFullscreen(true);
Display.create();
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
GLU.gluPerspective(30f, w / h, 0.003f, 1000f);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
Mouse.setGrabbed(true);
}catch (LWJGLException e){
e.printStackTrace();
}
}
public void gameLoop(){
while (!Display.isCloseRequested()){
if (Keyboard.isKeyDown(Keyboard.KEY_ESCAPE)){
System.exit(0);
Display.destroy();
}
render();
update();
glLoadIdentity();
c.lookThroughCamera();
Display.update();
Display.sync(60);
}
Display.destroy();
}
public void update(){
c.update();
c.mouseX = Mouse.getDX();
c.mouseY = -Mouse.getDY();
c.addYaw(c.mouseX * c.sensetivity);
c.addPitch(c.mouseY * c.sensetivity);
}
public void render(){
r.render();
}
}
来自glColorPointer的文档:
size: Specifies the number of components per color. Must be 3 or 4
将您的< code>colorSize更改为3,并将所需的浮点数添加到颜色缓冲区中,应该可以解决您的问题。
colorData.put(new float[]{0f,0f,0f, 1f,0f,0f, 1f,1f,0f, 0f,1f,0f});
我已经下载并安装了Codeception。我使用了以下说明:http://codeception.com/thanks 在编写和运行测试后,我得到以下错误: 我的单元测试如下: 当我的类没有扩展时,不会调用函数,断言函数也不会工作。 欢迎任何建议。
当我试图创建一个新的空项目(或任何其他类型的项目)时,我在IntelliJ IDEA版本2017.3.5中得到错误int the title。到目前为止,我所做的是: > 从以下网址下载社区版本(不含jdk)https://www.jetbrains.com/idea/download/download-thanks.html?platform=linuxwithoutjdk&code=iic 将
问题内容: 我对Python编码比较陌生,想了解Python中的统计信息和数据管理。为此,我想安装Matplotlib,这给了我一些问题。 我看到其他人有此问题,但是我还没有完全了解如何解决它。 要安装我使用 我安装了以下规格 Windows 10 Python 3.8 Microsoft Studio 2019 我遇到的第一个错误是安装Microsoft Studio,所以我做到了。我也尝试更新
问题内容: 这是我的组件代码的片段: 但是,当我运行此代码时,在出现意外的令牌错误。为什么会发生这种情况,我该如何解决? 问题答案: 您必须将方法调用包装在JSX元素中,否则Babel不会将return语句识别为JSX或在这种情况下为内联JSX表达式。它不会将您的代码从JSX转换为纯JavaScript,因此会出现错误。实际上,它被解释为 对象文字 ,而不是您期望的内联JSX表达式: 解决方案是将
我一直在遵循学说入门文档,并立即遇到了学说的CLI问题。 如果我试图逃跑 或者 或者甚至 PHP /vendor/bin/doctrine 我在我的终端中得到这个错误。。。 PHP致命错误:未捕获错误:在/Users/admin/.bitnami/stackman/machines/xampp/volumes/root/htdocs/doctrine2 tutorial/vendor/Doctri
> 我已经尝试了所有方法来添加这个远程存储库,但当我推送git-hub存储库时,我无法拉动或推送它可以工作,我缺少什么? e.gatoto@EMMANUELMINGW64~/Desktop/myrepo.git(master)$git推源主e.gatoto@192.168.180.27的密码:致命:~/Desktop/myrepo.git似乎不是git存储库致命:无法从远程存储库读取。 请确保您具