java - GL30 库中不存在 glGenVertexArrays()。(JAVA LWJGL)
问题描述
我正在尝试按照这个OpenGL 教程来渲染一个简单的三角形。在教程开始时,在“The VAO”部分下,我被告知要编写以下代码:
GLuint VertexArrayID;
glGenVertexArrays(1, &VertexArrayID);
glBindVertexArray(VertexArrayID);
我的这个 C 代码片段的 Java 代码是
int VertexArrayID;
glGenVertexArrays(1, VertexArrayID);
glBindVertexArray(VertexArrayID);
在文档中,说明我导入的 GL30 类包括方法 glGenVertexArray() 和 glBindVertexArray()。然而 IntelliJ 没有将其视为一种有效的方法。
我的进口:
import org.lwjgl.*;
import org.lwjgl.glfw.*;
import org.lwjgl.opengl.*;
import org.lwjgl.system.*;
import java.nio.*;
import static org.lwjgl.glfw.Callbacks.*;
import static org.lwjgl.glfw.GLFW.*;
import static org.lwjgl.opengl.GL11.*;
import org.lwjgl.opengl.GL30.*;
import static org.lwjgl.system.MemoryStack.*;
import static org.lwjgl.system.MemoryUtil.*;
我的 GLFW 窗口提示:
glfwWindowHint(GLFW_SAMPLES, 4); // 4x antialiasing
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3); // OpenGL 3
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE); // For macOS
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
我将 Maven 用于我的依赖项,在我的 pom.xml 中我使用 LWJGL 定制器中的预设“Everything” 。
解决方案
请注意,在 C 代码段中,它是指向被传递给 glGenVertexArrays 的 int 变量的指针 - 您正在传递应该使用生成的 ID 值填充的内存地址。
在 Java 中,您没有指向原始类型的指针的相同概念 - 在您的代码段中,您传递的是整数值,而不是指针。您尝试使用的 API 类没有glGenVertexArrays(int, int)
方法,因此您的 IDE 抱怨。
而是使用glGenVertexArrays(int[])
or glGenVertexArrays(IntBuffer)
,例如:
int[] vertexArrayIDs = new int[1]; // create an array where the generated ids will be stored
glGenVertexArrays(vertexArrayIDs); // no need to say how many IDs we want - it's implicit in the array length
glBindVertexArray(vertexArrayIDs[0]) // access the array to get the generated ID;
推荐阅读
- javascript - 使用反应原生拖动移动的 Animated.Image
- python-3.x - await 似乎阻止了 asycio.Future
- java - 有没有办法为 PriorityQueue 提供模块化参数
- r - 尽管相同,但 R 中的 2 个数字不相等,left_join 失败
- scala - 通过将 1 传递给 n 作为参数调用函数 n 次,数据帧作为函数的输出
- perl - 在 @INC 中找不到 Text/Soundex.pm
- angular - Angular 7 对动态样式的性能影响
- python - Coverage.py 不包括所有指定的文件和文件夹
- javascript - 如何向赛普拉斯故障添加额外数据?
- list - Vuetify 列表子组中的项目未垂直堆叠