単純なバイト配列から 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 の値は、OpenGL の場合と同様に 1 です。そして、問題なく色付きの線を描きます。そのため、テクスチャリングに何か問題があります。私は 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);