- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试了解顶点缓冲区对象。我已经能够在 2D 空间中成功渲染四边形(在初始化期间使用 glOrtho
),但在使用 gluPerspective
渲染时使用 VBO 时遇到问题。
我正在使用 Java 和 LWJGL,并在下面附上了我的代码。目前,除了黑色透明之外,没有任何内容渲染到窗口。
public class GameWindow {
// Height and width of the viewport
private final int WIDTH = 800;
private final int HEIGHT = 600;
private final float zNear = 1f;
private final float zFar = 1000f;
long lastFrame, lastFps;
int fps;
public void start() {
try {
Display.setDisplayMode(new DisplayMode(WIDTH, HEIGHT));
Display.create();
} catch (LWJGLException e) {
e.printStackTrace();
}
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(90, WIDTH / HEIGHT, zNear, zFar);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
float[] quadCoords = {
100, 100, -1,
300, 100, -1,
300, 300, -1,
100, 300, -1
};
float[] colorCoords = {
1, 0, 0,
0, 1, 0,
0, 0, 1,
1, 0, 1
};
FloatBuffer vertexData = BufferUtils.createFloatBuffer(4 * 3);
vertexData.put(quadCoords);
vertexData.flip();
FloatBuffer colorData = BufferUtils.createFloatBuffer(4 * 3);
colorData.put(colorCoords);
colorData.flip();
int vboVertex = glGenBuffers();
glBindBuffer(GL_ARRAY_BUFFER, vboVertex);
glBufferData(GL_ARRAY_BUFFER, vertexData, GL_STATIC_DRAW);
glBindBuffer(GL_ARRAY_BUFFER, 0);
int vboColor = glGenBuffers();
glBindBuffer(GL_ARRAY_BUFFER, vboColor);
glBufferData(GL_ARRAY_BUFFER, colorData, GL_STATIC_DRAW);
glBindBuffer(GL_ARRAY_BUFFER, 0);
getDelta();
lastFps = TimeUtil.getTime();
while (!Display.isCloseRequested()) {
int delta = getDelta();
updateFPS();
glClear(GL_COLOR_BUFFER_BIT);
glBindBuffer(GL_ARRAY_BUFFER, vboVertex);
glVertexPointer(3, GL_FLOAT, 0, 0L);
glBindBuffer(GL_ARRAY_BUFFER, vboColor);
glColorPointer(3, GL_FLOAT, 0, 0L);
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_COLOR_ARRAY);
glDrawArrays(GL_QUADS, 0, 4);
glDisableClientState(GL_COLOR_ARRAY);
glDisableClientState(GL_VERTEX_ARRAY);
Display.update();
Display.sync(60);
}
Display.destroy();
}
private int getDelta() {
long time = TimeUtil.getTime();
int delta = (int) (time - lastFrame);
lastFrame = time;
return delta;
}
public void updateFPS() {
if (TimeUtil.getTime() - lastFps > 1000) {
Display.setTitle("FPS: " + fps);
fps = 0;
lastFps += 1000;
}
fps++;
}
public static void main(String[] args) {
GameWindow window = new GameWindow();
window.start();
}
}
最佳答案
我认为你的四边形的顶点在视野之外。如果不设置 View 矩阵(例如通过 gluLookAt),相机将指向 -Z 轴。您要求 zNear 和 zFar 为 1.0 和 1000.0,因此将绘制 z 坐标 -1.0 和 -1000.0 之间的所有内容(zNear 和 zFar 类似于到相机的“距离”)。您还必须考虑到透视投影与正交投影确实不同。我想说,尝试将顶点移回到 Z 轴上,如下所示:
float[] quadCoords = {
100, 100, -500,
300, 100, -500,
300, 300, -500,
100, 300, -500
};
关于java - 将顶点缓冲区对象与 gluPerspective 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17518979/
我创建了一个 5 面盒子,并在其中放入一个球,并让它在盒子内弹跳。我使用 glOrtho 创建了这个。 我想为我的类(class)创建一个 3d 打砖 block 风格的游戏,所以我想把我的相机放进盒
我用gluPerspective主要是增加绘制距离,但是好像不行。 这是它在我的代码中的显示方式: gluPerspective(0, 70/70, 0, 4333); ratio:窗口的Width和
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); //set viewpoint glMatrixMode(GL_PROJECTION); glLoa
我正在学习 OpenGL;我设法制作了我的第一个 2D 程序,但我仍然坚持使用 gluPerspective。 我正在尝试一个小测试,试图掌握如何制作 3D 项目,但我似乎无法弄清楚我缺少什么以及使这
我查看了 MSDN 上关于这两个函数的文档。但是,我并不完全理解这两个函数之间的区别,除了一个用于设置 3D 相机 View ,另一个用于设置 2D 相机 View 。如果能得到解答就好了。提前感谢您
我想知道 gluPerspective参数。 在所有示例中,我看到 fovy设置为45-60度左右 我试图将它设置为不同的值,但对象就消失了 对此有何解释? aspect值(value)应该永远是比率
我正在尝试了解顶点缓冲区对象。我已经能够在 2D 空间中成功渲染四边形(在初始化期间使用 glOrtho),但在使用 gluPerspective 渲染时使用 VBO 时遇到问题。 我正在使用 Jav
我在 (0,0) 处抽了一辆汽车,并设置了一些障碍,但现在我主要关心的是从 glPerspective 切换到 glOrtho,反之亦然。当我从透视切换到正射时,我得到的只是黑屏。 void myin
我正在用 glm 替换我的项目中对 glu 方法的使用,我似乎遇到了一个我无法解释的奇怪差异。当我使用此代码使用 gluPerspective 设置投影矩阵时,我得到以下显示: glMatrixMod
我正在做我的 OpenGL 程序,碰巧遇到了问题,你能找出它出了什么问题吗? 以y轴为中心旋转一个平面当我使用 glOrtho 时,它工作正常,但 gluPerspective 则不然。 gluPer
我是 OpenGL 新手,仍在尝试基本形状。我有时会发现许多函数,例如 glEnd 等,OpenGL 3+ 文档中未提及这些函数。它们被其他功能取代了吗?或者我必须手动编写它们?是否有使用 OpenG
好吧。我对 OpenGL 之类的东西还是全新的。我正在使用 LWJGL 3 和 JOGL(用于 GLU),并且我的自学过程完全停止了。现在我正在尝试使用 GLU.gluPerspective(80,
我有一个 init() 方法,我正在尝试创建一个 Perspective 渲染。下面是我到目前为止的代码,但是我传递给 gluPerspective(fovy, aspect, zNear, zFar
大家好,我是 opengl 的初学者,正在尝试理解 gluPerspective() 函数的概念。我浏览了这篇文章 gluPerspective parameters- what do they me
编辑........ 所以我已经摆脱了所有的废话,现在只有一个 SSCE(希望我明白现在是什么)。对于还没有看到这个问题的人,我想在调整大小时保持纵横比,但窗口的行为就好像我已经注释掉了与调整大小时有
在所有未被引用的函数中,我的 gluPerspective 在我尝试使用它时返回错误。我知道它与语法或人为错误无关:我一直在从 SFML 教程中复制/粘贴它使用的代码行。 我正在使用 QT Creat
如何将 gluPerspective 函数转换为 glFrustum?我曾尝试使用此等式,但运气不佳,因为它生成的图像与使用 gluPerspective 生成的图像不同。 top = tan(f
如果没有 Glu,我怎么能像 GluPerspective 一样呢?谢谢 例如:gluPerspective(45.0, (float)w/(float)h, 1.0, 200.0); 最佳答案 vo
我正在编写一个太空探索应用程序。我决定以光年为单位,并准确地模拟了恒星之间的距离。经过修补和大量艰巨的工作(主要是学习绳索),我让相机从穿越宇宙的星舰的角度正常工作。 最初我没有注意 gluPersp
我正在学习 OpenGL,但在使用 gluPerspective 时遇到了问题。这是我在 Init() 中使用的代码 // Calculate The Aspect Ratio Of The Wind
我是一名优秀的程序员,十分优秀!