如何将像素从简单的字节数组上传到 OpenGL 纹理?
我正在使用glTexImage2D,我得到的只是一个白色矩形而不是像素化纹理。第 9 个参数(指向像素数据的 32 位指针)是 IMO 的问题。我在那里尝试了很多参数类型(byte、ref byte、byte[]、ref byte[]、int & IntPtr + Marshall、out byte、out byte[]、byte*)。glGetError() 总是返回 GL_NO_ERROR。一定有什么我做错了,因为它从来不是一些乱码的像素。它总是白色的。glGenTextures 工作正常。第一个 id 的值是 1,就像在 OpenGL 中一样。我画彩色线条没有任何问题。所以我的纹理有问题。我控制着 DllImport。所以我可以根据需要更改参数类型。
GL.glBindTexture(GL.GL_TEXTURE_2D, id);
int w = 4;
int h = 4;
byte[] bytes = new byte[w * h * 4];
for (int i = 0; i < bytes.Length; i++)
bytes[i] = (byte)Utils.random(256);
GL.glTexImage2D(GL.GL_TEXTURE_2D, 0, GL.GL_RGBA, w, h, 0, GL.GL_RGBA, GL.GL_UNSIGNED_BYTE, bytes);
[DllImport(GL_LIBRARY)] public static extern void glTexImage2D(uint what, int level, int internalFormat, int width, int height, int border, int format,
int type, byte[] bytes);