我目前正在尝试用cubey地形制作一个基本游戏,类似于Minecraft classic。我的第一个问题:
如何在VBO中存储多维数据集列表,然后在更改该数据时重新生成该列表?我当前呈现的立方体如下所示:
vertices = BufferUtils.createFloatBuffer(3 * 4 * 6);
vertices.put(new float[] {
-1.0f, -1.0f, 1.0f,
1.0f, -1.0f, 1.0f,
1.0f, 1.0f, 1.0f,
-1.0f, 1.0f, 1.0f,
-1.0f, -1.0f, -1.0f,
-1.0f, 1.0f, -1.0f,
1.0f, 1.0f, -1.0f,
1.0f, -1.0f, -1.0f,
-1.0f, 1.0f, -1.0f,
-1.0f, 1.0f, 1.0f,
1.0f, 1.0f, 1.0f,
1.0f, 1.0f, -1.0f,
-1.0f, -1.0f, -1.0f,
1.0f, -1.0f, -1.0f,
1.0f, -1.0f, 1.0f,
-1.0f, -1.0f, 1.0f,
1.0f, -1.0f, -1.0f,
1.0f, 1.0f, -1.0f,
1.0f, 1.0f, 1.0f,
1.0f, -1.0f, 1.0f,
-1.0f, -1.0f, -1.0f,
-1.0f, -1.0f, 1.0f,
-1.0f, 1.0f, 1.0f,
-1.0f, 1.0f, -1.0f});
vertices.rewind();
vertexBufferID = createVBOID();
bufferData(vertexBufferID, vertices);
public static int createVBOID() {
if (GLContext.getCapabilities().GL_ARB_vertex_buffer_object) {
IntBuffer buffer = BufferUtils.createIntBuffer(1);
ARBVertexBufferObject.glGenBuffersARB(buffer);
return buffer.get(0);
}
return 0;
}
public static void bufferData(int id, FloatBuffer buffer) {
ARBVertexBufferObject.glBindBufferARB(ARBVertexBufferObject.GL_ARRAY_BUFFER_ARB, id);
ARBVertexBufferObject.glBufferDataARB(ARBVertexBufferObject.GL_ARRAY_BUFFER_ARB, buffer, ARBVertexBufferObject.GL_DYNAMIC_DRAW_ARB);
}
public void renderGL() {
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glClearColor(0.0f, 0.0f, 0.0f, 0.5f);
glViewport(0, 0, Display.getWidth(), Display.getHeight());
glLoadIdentity();
glRotatef(xrot, 1.0f, 0.0f, 0.0f);
glRotatef(yrot, 0.f, 1.0f, 0.0f);
glTranslated(-xpos, -ypos - 19, -zpos - 5);
glEnableClientState(GL_VERTEX_ARRAY);
ARBVertexBufferObject.glBindBufferARB(ARBVertexBufferObject.GL_ARRAY_BUFFER_ARB, vertexBufferID);
glVertexPointer(3, GL_FLOAT, 0, 0);
for (int y = 0; y < 16; y++) {
for (int x = 0; x < 16; x++) {
for (int z = 0; z < 16; z++) {
glPushMatrix();
glTranslatef(x, y, z);
glDrawArrays(GL_QUADS, 0, 24);
glPopMatrix();
}
}
}
glDisableClientState(GL_VERTEX_ARRAY);
}
我知道我需要使用glMapBuffer
和glUnMapBuffer
来修改VBO,但是如何存储多维数据集并在需要时删除它们?我应该使用ArrayList吗?另外,有人告诉我,我渲染立方体的方式是错误的,因为每个人都说我只渲染一个具有新坐标的立方体。他们说我的顶点数据保持不变,这是什么意思?
所以基本上我的问题是,1。如何使用数组保存多维数据集列表并将其加载到VBO中,然后删除一些多维数据集?2.如何更改顶点数据,以便渲染不同的立方体,而不是一次又一次地渲染一个立方体?
通常情况下,场景的CPU表示(在本例中是立方体列表)和GPU表示(顶点缓冲区等)
在本例中,立方体仅由其位置定义。它们都有相同的尺寸等等。以下是一些如何渲染多个立方体的选项:
>
让GPU在其几何体着色器中创建立方体。因此,您只需在顶点缓冲区中指定立方体的位置。映射顶点缓冲区时,将获得指向可以将新数据复制到的数据的指针。
使用实例化。为着色器提供一个位置数组,并以实例模式渲染立方体。使用实例id确定偏移向量。
有关代码,请参见此处:https://stackoverflow.com/a/18672821/2521214但是,出于GLSL目的,post使用VAO VBO,因此如果您不使用GLSL,则需要进行一些更改。
如果我想为spring quartz使用cron触发器,quartz是使用java系统时间还是操作系统时间执行作业? 我计划有一个属性文件来保存我所有的cron触发器。如果有人去更改cron触发器以执行一个任务,那么quartz会自动接收文件中的更改吗?或者,如果这不是默认行为,我有没有办法告诉quartz如何执行此操作。 我最近一直在读spring批处理管理控制台。听起来像是一个很好的重新安排作
下面引用的文章是一篇名为《如何编写Java卡小程序:开发人员指南》的文章的一部分,作者是陈志群。 我在这里看到了 一旦选择了一个小应用程序,JCRE就会将所有后续的APDU命令(包括SELECT命令)转发给小应用程序的进程()方法。在进程()方法中,小应用程序解释每个APDU命令,并执行命令指定的任务。对于每个命令APDU,小应用程序通过发回响应APDU来响应CAD,该响应APDU将处理命令APD
> 我在多个地方读到,由于U2F没有用户的概念,所以它可以用作登录的因素之一(在MFA中),但对于无密码来说并不理想,而webauthn有用户的概念,这可以帮助使用无密码。我的问题是webauthn为允许这样做而增加的额外内容是什么?是的,我们在创建凭据时传递用户信息,但最终返回的是一个凭据id(它似乎非常类似于keyhandle)并用于关联用户(在服务器上)。据我所知,webauthn def的
上图是一个 wordpress 主题的文件部分结构 一直弄不懂 front-page.php, home.php 这两个文件到底有什么区别? 都是代表首页吗? home.php 和 single.php 又有什么区别? 如果查看单篇文章会进入 single.php, 那 home.php 为什么会被叫做文章页? 文件有点混淆, 求大佬指点指点..
a)是否有一种方法来确保AltBeacon广告是唯一的。从某种意义上说,其他人不会错误地在他们的信标中使用相同的UUID,主要和次要ID。因为如果发生这种情况,我们的应用程序有可能识别另一家公司的信标并出现故障,反之亦然。 所以,我想知道目前在AltBeacon规范和库本身中是否有任何解决方案(变通方法)?还是他们在排队?我不确定,这是否是可以在库级别本身完成的事情,或者Android级别或者可能
做作业的时候,算法的实现洪流填满了。我正在为这个指南编写一个程序:http://en.wikipedia.org/wiki/flood_fill。我有一些问题: 指定函数中的参数替换任何字符的颜色是否正常,我不知道这些坐标最初是什么颜色? 算法正确吗?例如,我在维基百科中编写了它,但我的程序的结果如下: 我的代码: