I am loading textures in using the following code:
var texture = new SharpGL.SceneGraph.Assets.Texture();
texture.Create(gl, filename);
But when I render them onto a polygon they are extremely low resolution. It looks like about 100x100 but the source image is much higher resolution than that.
to add the texture I later call:
gl.Enable(OpenGL.GL_TEXTURE_2D);
gl.BindTexture(OpenGL.GL_TEXTURE_2D, 0);
That's all the texture commands I call other than supplying each vertex with a gl.TexCoord This all works fine but its just that the displayed image is very pixilated and blurry.
Is there some OpenGL setting that I must use to enable higher resolution textures?
So the answer was that the Create method in SharpGL.SceneGraph that creates textures is made to downsample textures to the next lowest power of 2 for height and width and does a real shitty job of it. For example an image that's 428x612 will get downsampled to 256x512... poorly.
I wrote this extension method that will import a bitmap into a texture and retain the full resolution.
I suppose I wouldn't have encountered this problem if I had supplied image files that were already scaled to powers of two but that wasn't obvious.
Usage