У меня может быть ответ для вас.
Это мой класс для загрузки текстуры с библиотеками devIL.
public class TextureLoader
{
int texid;
bool success;
int image;
int width;
int height;
string path;
public TextureLoader(string path)
{
this.path = path;
}
public void display()
{
Il.ilInit();
Il.ilGenImages(1, out texid);
Il.ilBindImage(texid);
success = Il.ilLoadImage(path);
if (success)
{
success = Il.ilConvertImage(Il.IL_RGBA, Il.IL_UNSIGNED_BYTE);
if (!success)
Console.WriteLine("ERROR");
width = Il.ilGetInteger(Il.IL_IMAGE_WIDTH);
height = Il.ilGetInteger(Il.IL_IMAGE_HEIGHT);
Gl.glGenTextures(1, out image);
Gl.glBindTexture(Gl.GL_TEXTURE_2D, image);
Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_MAG_FILTER, Gl.GL_LINEAR);
Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_MIN_FILTER, Gl.GL_LINEAR);
Gl.glTexImage2D(Gl.GL_TEXTURE_2D, 0,
Il.ilGetInteger(Il.IL_IMAGE_BPP),
Il.ilGetInteger(Il.IL_IMAGE_WIDTH),
Il.ilGetInteger(Il.IL_IMAGE_HEIGHT), 0,
Il.ilGetInteger(Il.IL_IMAGE_FORMAT), Gl.GL_UNSIGNED_BYTE,
Il.ilGetData()
);
}
Il.ilDeleteImage(texid);
Gl.glBegin(Gl.GL_QUADS);
Gl.glTexCoord2f(0.0f, 0.0f); Gl.glVertex2f(-width / 2.0f, height / 2.0f);
Gl.glTexCoord2f(0.0f, 1.0f); Gl.glVertex2f(-width / 2.0f, height / 2.0f);
Gl.glTexCoord2f(1, 1); Gl.glVertex2f(1, -1);
Gl.glTexCoord2f(1, 0); Gl.glVertex2f(1, 1);
Gl.glEnd();
Gl.glFlush();
Gl.glDeleteTextures(1, ref image);
}
}
Код не комментируется, но не сложен.С помощью этого класса я могу загружать изображения в формате png и jpg.
Надеюсь, это поможет вам.