Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java glOrtho相当于VBO';s_Java_Opengl_Lwjgl - Fatal编程技术网

Java glOrtho相当于VBO';s

Java glOrtho相当于VBO';s,java,opengl,lwjgl,Java,Opengl,Lwjgl,我正在尝试使用LWJGL将clickteamfusion游戏移植到Java。我决定只使用像素测量,因为这个游戏中的一切都是使用PNG文件,甚至是动画(是的,真的)。我听说过一个名为glOrtho()的函数,它可以让你设置如何在OpenGL中绘制东西 虽然我成功地使用了像glVertexf()这样的函数,但是包括glOrtho()在内的那些函数已经被弃用了,如果我是正确的,在OpenGL 3.1中完全删除。因此,我使用的是现代的方法,即使用VBO、索引、着色器等。有没有任何方法可以使用VBO实现g

我正在尝试使用
LWJGL
clickteamfusion
游戏移植到
Java
。我决定只使用像素测量,因为这个游戏中的一切都是使用
PNG
文件,甚至是动画(是的,真的)。我听说过一个名为
glOrtho()
的函数,它可以让你设置如何在
OpenGL
中绘制东西 虽然我成功地使用了像
glVertexf()
这样的函数,但是包括
glOrtho()
在内的那些函数已经被弃用了,如果我是正确的,在
OpenGL 3.1
中完全删除。因此,我使用的是现代的方法,即使用
VBO、索引、着色器等。有没有任何方法可以使用
VBO
实现
glOrtho()
的效果


如果你需要我,我可以上传我在这里的当前代码以及;只需留下一条评论,我就会用我现有的代码更新帖子。

对于OpenGL>=3.1,您需要定义自己的矩阵。有一些LIB为您定义了它们。GLM,举个著名的例子。 格洛托矩阵定义可在此处找到:
格洛托不是一种“效果”,而是一种将事物投射到屏幕上的方式。Ortho指的是“正交”,意思是“无透视”。对于OpenGL>=3.1,您需要定义自己的矩阵。有一些LIB为您定义了它们。GLM,举个著名的例子。 格洛托矩阵定义可在此处找到: 格洛托不是一种“效果”,而是一种将事物投射到屏幕上的方式。正交是指“正交”,意思是“无透视”。投影矩阵(
glOrtho
)应与VBO数据分开计算。整个固定函数堆栈已从核心配置文件(包括
glVertexf
等)中删除,因此您应该自己进行矩阵运算,并将带有正交投影的投影矩阵发送到作为着色器统一编写的着色器

LWJGL有一个Matrix4f类,它使生活变得更简单,上一次我检查它在LWJGL 3.0中没有替换,但从那时起情况可能发生了变化。还有少数几个其他的图书馆打算作为替代品

无论哪种方式,您都应该能够在网上找到glOrtho的实现。这是我第一次想到LWJGL:

如果您决定推出自己的产品,相关功能:

public static Matrix4f orthographic(float left, float right, float bottom, float top, float near, float far) {
    Matrix4f ortho = new Matrix4f();

    float tx = -(right + left) / (right - left);
    float ty = -(top + bottom) / (top - bottom);
    float tz = -(far + near) / (far - near);

    ortho.m00 = 2f / (right - left);
    ortho.m11 = 2f / (top - bottom);
    ortho.m22 = -2f / (far - near);
    ortho.m03 = tx;
    ortho.m13 = ty;
    ortho.m23 = tz;

    return ortho;
}
投影矩阵(
glOrtho
)应与VBO数据分开计算。整个固定函数堆栈已从核心配置文件(包括
glVertexf
等)中删除,因此您应该自己进行矩阵运算,并将带有正交投影的投影矩阵发送到作为着色器统一编写的着色器

LWJGL有一个Matrix4f类,它使生活变得更简单,上一次我检查它在LWJGL 3.0中没有替换,但从那时起情况可能发生了变化。还有少数几个其他的图书馆打算作为替代品

无论哪种方式,您都应该能够在网上找到glOrtho的实现。这是我第一次想到LWJGL:

如果您决定推出自己的产品,相关功能:

public static Matrix4f orthographic(float left, float right, float bottom, float top, float near, float far) {
    Matrix4f ortho = new Matrix4f();

    float tx = -(right + left) / (right - left);
    float ty = -(top + bottom) / (top - bottom);
    float tz = -(far + near) / (far - near);

    ortho.m00 = 2f / (right - left);
    ortho.m11 = 2f / (top - bottom);
    ortho.m22 = -2f / (far - near);
    ortho.m03 = tx;
    ortho.m13 = ty;
    ortho.m23 = tz;

    return ortho;
}