我正在制作一个简单的3d程序,现在我需要插入一个2D图像作为背景。我需要在大学里使用陶的框架。这是代码的一部分。如何将图像加载到int
阵列中?
Gl.glEnable(Gl.GL_TEXTURE_2D);
int texture; // storage for texture for one picture
texture = ????? ;
Gl.glGenTextures(1, texture); ??????
// Create The Texture
// Typical Texture Generation Using Data From The Bitmap
Gl.glBindTexture(Gl.GL_TEXTURE_2D, texture);
Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_MIN_FILTER, Gl.GL_LINEAR); // Linear Filtering
Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_MAG_FILTER, Gl.GL_LINEAR);
纹理本身不是int数组。int texture
只是纹理的一个不确定的标识符-通常第一个创建的纹理的id为0,第二个id为1,等等(取决于驱动程序-id在您的系统上可能完全不同)
要指定二维纹理图像,必须使用Gl.glTexImage2D(...)
Gl.glBindTexture(Gl.GL_TEXTURE_2D, texture);
// some random data
Random r = new Random();
byte[] image = new byte[512 * 512 * 3];
for (int i = 0; i < 512 * 512; i++)
{
image[i * 3 + 0] = (byte)r.Next(0, 255);
image[i * 3 + 1] = (byte)r.Next(0, 255);
image[i * 3 + 2] = (byte)r.Next(0, 255);
}
Gl.glTexImage2D(Gl.GL_TEXTURE_2D, 0, Gl.GL_RGB, 512, 512, 0,
Gl.GL_BGR_EXT, Gl.GL_UNSIGNED_BYTE, image);
不使用随机数据,您还可以将图像转换为此处所述的字节数组