如何在C#中使用GLFW正确调用glTexImage2D

问题描述 投票:0回答:1

我试图为我正在处理的 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

非常感谢!

c# image glfw texture2d opengl-4
1个回答
0
投票

我找到了答案,它需要一个参考,所以用 &buffer 而不是 buffer。 为什么发帖后总是能找到答案?

几天后我会将其设置为答案

© www.soinside.com 2019 - 2024. All rights reserved.