我试图为我正在处理的 OpenGL 项目设置纹理渲染,但我无法让它工作,因为显然 glTexImage2D 函数的最后一个参数在一个 nint 中。我在网上查了一下,它似乎是一种整数类型,但它没有意义,因为那是应该获取图像数据的参数?不管怎样,我正在尝试找到一种方法将 RGBA 数据的字节数组转换为这个 nint 类型以将其传递给这个函数,有谁知道怎么做吗?
这是到目前为止的代码:
byte[] buffer = File.ReadAllBytes("Grass_Block_29_JE2_BE2.rgba");
for (int i = 0; i < buffer.Length; i++) {
Console.WriteLine(buffer[i]);
}
while (!Glfw.WindowShouldClose(window)) {
// Load texture
uint texture = glGenTexture();
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, texture);
// Texture setup
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 160, 160, 0, GL_RGBA, GL_UNSIGNED_BYTE, buffer); // This is the code that isn't working, compiler says buffer is a byte[] not nint
非常感谢!
我找到了答案,它需要一个参考,所以用 &buffer 而不是 buffer。 为什么发帖后总是能找到答案?
几天后我会将其设置为答案