- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在为我的物理引擎制作一个 api,并使用 VBO 来绘制。
我的问题是我得到了一个Cannot use offsets when array buffer object is disabled
这是完整的错误:
Exception in thread "main" org.lwjgl.opengl.OpenGLException: Cannot use offsets when Array Buffer Object is disabled
at org.lwjgl.opengl.GLChecks.ensureArrayVBOenabled(GLChecks.java:93)
at org.lwjgl.opengl.GL11.glVertexPointer(GL11.java:2657)
at com.FuZi0nHD.MyFirstGame.main.Render.draw(Render.java:38)
at com.FuZi0nHD.MyFirstGame.main.Game.<init>(Game.java:12)
at com.FuZi0nHD.MyFirstGame.client.Start.main(Start.java:14)
这是我的代码:
类(class)游戏
public class Game {
public Game() throws LWJGLException {
new Init().initalize();
Render r = new Render();
r.dod();
r.draw();
Display.update();
}
}
类初始化
public class Init {
private static int initListSize = 8;
protected static final Init[] initList;
public static String[] initListNames;
private int id = 0;
static {
initList = new Init[initListSize];
for (int i = 0; i < initList.length; i++) {
initList[i] = null;
}
initListNames = new String[initListSize];
for (int i = 0; i < initListNames.length; i++) {
initListNames[i] = "NULLOBJECTNAME";
}
}
public void initalize() {
addDefault();
Initdo();
RunList();
}
private void RunList() {
int no = initList.length;
int i = 0;
while (i < no) {
if (initList[i] != null) {
System.out.println("run id: " + i);
initList[i].RunInit();
}
i++;
}
}
private void RunList(String name) {
}
private void addDefault() {
addToArray(new InitDisplay(), "Display");
}
private void addToArray( Init clazz, String name) {
initList[id] = (Init) clazz;
initListNames[id] = name;
id = id + 1;
}
}
类初始化显示
public class InitDisplay extends Init{
@Override
public void RunInit() {
try {
JDisplay.setDisplay(640, 420, false);
Display.setResizable(true);
Display.setTitle("My Game");
ARBBufferObject.glGenBuffersARB(Uni.ib);
displayRender();
} catch (LWJGLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private void displayRender() {
GL11.glViewport(0, 100, Display.getX(), Display.getY());
GL11.glClear(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT | GL11.GL_STENCIL_BUFFER_BIT);
GL11.glMatrixMode(GL11.GL_PROJECTION);
GL11.glLoadIdentity();
GL11.glMatrixMode(GL11.GL_MODELVIEW);
GL11.glLoadIdentity();
GL11.glEnable(GL15.GL_ARRAY_BUFFER_BINDING);
}
}
JDisplay 类
public class JDisplay {
public static void setDisplay(int X, int Y, boolean fullscreen) throws LWJGLException {
Display.setDisplayMode(new DisplayMode(X, Y));
Display.setFullscreen(fullscreen);
Display.create();
}
public static void setDefault() throws LWJGLException {
Display.setDisplayMode(Display.getDesktopDisplayMode());
Display.create();
}
public static void setFullscreen() throws LWJGLException {
Display.setFullscreen(true);
Display.create();
}
}
渲染类
这里有错误
行:GL11.glVertexPointer(3, GL11.GL_FLOAT, 3, 0);
public class Render {
private FloatBuffer cBuffer = Uni.cBuffer;
private FloatBuffer vBuffer = Uni.vBuffer;
private IntBuffer ib = Uni.ib;
private int cHandle = Uni.cHandle;
private int vHandle = Uni.vHandle;
public void createNewColourBuf(int size) {
cBuffer = BufferUtils.createFloatBuffer(size);
}
public void createNewVertexBuf(int size) {
vBuffer = BufferUtils.createFloatBuffer(size);
}
public void draw() {
GL11.glEnableClientState(GL11.GL_VERTEX_ARRAY);
GL11.glEnableClientState(GL11.GL_COLOR_ARRAY);
GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, Uni.vHandle);
GL15.glBufferData(GL15.GL_ARRAY_BUFFER, Uni.vBuffer, GL15.GL_STATIC_DRAW);
GL11.glVertexPointer(3, GL11.GL_FLOAT, 3, 0);
GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, Uni.cHandle);
GL15.glBufferData(GL15.GL_ARRAY_BUFFER, Uni.cBuffer, GL15.GL_STATIC_DRAW);
//If a have Alfa colour change to 4
GL11.glColorPointer(3, GL11.GL_FLOAT, 3, 0);
GL11.glDrawArrays(GL11.GL_QUADS, 0, 4 /* elements */);
GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, 0);
GL11.glDisableClientState(GL11.GL_COLOR_ARRAY);
GL11.glDisableClientState(GL11.GL_VERTEX_ARRAY);
// cleanup VBO handles
ib.put(0, Uni.vHandle);
ib.put(1, Uni.cHandle);
ARBBufferObject.glDeleteBuffersARB(Uni.ib);
}
public void dod() {
vBuffer.put(0.0f).put(0.0f).put(0.0f);
vBuffer.put(1.0f).put(0.0f).put(0.0f);
vBuffer.put(1.0f).put(1.0f).put(0.0f);
vBuffer.put(0.0f).put(1.0f).put(0.0f);
vBuffer.flip();
cBuffer.put(0.5f).put(0.5f).put(0.5f);
cBuffer.put(0.5f).put(0.5f).put(0.5f);
cBuffer.put(0.5f).put(0.5f).put(0.5f);
cBuffer.put(0.5f).put(0.5f).put(0.5f);
cBuffer.flip();
}
}
大学类(class)
public interface Uni {
PropotiesFinal pf = new PropotiesFinal();
public FloatBuffer vBuffer = BufferUtils.createFloatBuffer(pf.VC_BUFFER_SIZE);
public FloatBuffer cBuffer = BufferUtils.createFloatBuffer(pf.VC_BUFFER_SIZE);
public IntBuffer ib = BufferUtils.createIntBuffer(pf.BUFFFERS);
public int vHandle = ib.get(0);
public int cHandle = ib.get(1);
}
类属性最终
public class PropotiesFinal {
/*
* The size of the Vertex/Color Buffers
*/
public final int VC_BUFFER_SIZE = 1024;
public final int BUFFFERS = 2;
}
我被要求提供我的所有代码,所以这里是。
最佳答案
我不能明确地说我知道问题所在,但以下是我的建议:
首先我会尝试改变:
GL11.glVertexPointer(3, GL11.GL_FLOAT, 3, 0);
至
GL11.glVertexPointer(3, GL11.GL_FLOAT, 0, 0);
您的颜色指针也应该如此,将 3 替换为零,这样可能会起作用。
还有什么可能有帮助:
尝试使用 GL15.glGenBuffers() 创建顶点句柄,而不是使用 int 缓冲区
尽管您的代码显示它是一个接口(interface),但您将 Uni 称为一个类,但我认为根据您使用它的方式,它应该是一个类。
从我在这里看到的,您不断地使用相同的硬编码值创建一个缓冲区,删除它然后再次创建它。我认为在这种情况下,您应该创建一次缓冲区,并且不要在每次渲染后删除它,除非您更改缓冲区中的值。
这就是我的全部内容,希望对您有所帮助。
关于java - 禁用数组缓冲区对象时无法使用偏移量 - lwjgl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16768886/
我正在尝试从第 4 到 9 页以及第 12 和 13 页上的单元格中清除所有内容(包括图像)。我有以下代码,但它正在清除第 3-9 和 12-15 页中的内容,我不知道为什么。 有什么想法吗? Sub
有没有办法增加极坐标图刻度标签(θ)的填充/偏移? import matplotlib import numpy as np from matplotlib.pyplot import figure,
我正在调用本地 API 并尝试以分页 样式进行操作。我有 n 张图片,我想将它们分成 n/4 行(每行 4 张图片)。因此,我正在调用我的 API,images/count,offset。但不知何故,
我的问题解释起来有点棘手,但无论如何我都会尝试。我有两个水平选项卡,当您单击它们时,会打开一个文本框内容。当他们被点击时,我试图“关注”他们。我在网上找到了很多资料,但除了我在下面显示的这段代码外,没
所以我有一个 float 的 div,我需要它始终向右 200 像素,并填充窗口的其余部分。有没有某种跨浏览器兼容的方法,我可以在不借助 javascript 的情况下使宽度填满页面的其余部分? 最佳
我有以下片段 $('html,body').animate({scrollTop: $('#menu').offset().top}, 'slow'); 单击链接时,我希望浏览器从#menu div
我目前正在为我的应用程序使用 JASidePanel,并且我有一个 UITableViewcontroller 和一个 UIRefreshControl 作为它的 ViewController 之一。
给出以下代码: imshow(np.arange(16*16).reshape(16,16)) cb = colorbar() cb.set_label("Foo") cb.set_ticks([0,
我是编程新手,我认为 VBA 是一个很好的起点,因为我在 Excel 中做了很多工作。 我创建了一个宏,它从输入框中获取一个整数(我一直使用 2、3 和 4 来测试),并创建该数字的一组 4 层层次结
我在 PHP 中有一个 unix 时间戳: $timestamp = 1346300336; 然后我有一个我想要应用的时区的偏移量。基本上,我想应用偏移量并返回一个新的 unix 时间戳。偏移量遵循这
演示:http://jsfiddle.net/H45uY/6/ 我在这里想做的是将 的左上角设为跟随鼠标。代码在没有段落的情况下工作正常(请参阅上面的演示),但是当您添加段落时,被向上推,鼠标位于盒
假设我们有两个由无符号长(64 位)数组表示的位图。我想使用特定的移位(偏移)合并这两个位图。例如,将位图 1(较大)合并到位图 2(较小)中,起始偏移量为 3。偏移量 3 表示位图 1 的第 3 位
通过在 pageViewController 中实现 tableView,tableView 与其显示的内容不一致。对此最好的解决办法是什么? 最佳答案 如果您的 TableView 是 View C
我设置了一个在 nib 中显示地点信息的地点配置文件。当我在标准屏幕流程中推送此 View 时,它工作正常。但是,当我从另一个选项卡推送此 View 时,UINavigationBar 似乎抵消了它,
如果我想选择 5 条记录,我会这样做: SELECT * FROM mytable LIMIT 5 如果我想添加偏移量,我会这样做: SELECT * FROM mytable OFFSET 5 LI
我有一个应用程序,其中某些 View 需要全屏,而其他 View 不需要全屏。在某些情况下,我希望背景显示在状态栏下方,所以我在 View 加载时使用它来使 Activity 全屏显示: window
在下图中,我进行绘制,结果位于 A 点,就在我手指接触的地方。 如何使图像显示在实际触摸上方约 40pt。 (二) 我正在使用经典的 coreGraphic UITouch 代码,如下所示: - (v
只要键盘处于事件状态,我就会尝试偏移 UITextField,效果很好,直到我尝试了表情符号布局。有没有办法检测键盘输入的类型,以便找出高度差?谢谢 最佳答案 不是使用 UIKeyboardDidSh
这是我的 Swift 代码 (AppDelegate.swift): var window: UIWindow? var rootViewController :UIViewController? f
我有一个 div 作为绝对定位的 body 的直接子节点,其 css 属性定义如下: div[id^="Container"] { display: block; position: a
我是一名优秀的程序员,十分优秀!