1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| // 5. Generate texture
// -------------------------------------------------------------------------------
// Generate texture ID and bind corresponding texture
Gl.glGenTextures(1, out tex._texID);
Gl.glBindTexture(Gl.GL_TEXTURE_2D, tex._texID);
Gl.glTexEnvf(Gl.GL_TEXTURE_ENV, Gl.GL_TEXTURE_ENV_MODE, Gl.GL_REPLACE);
// Setup some parameters for texture filters and mipmapping
Gl.glPixelStorei(Gl.GL_UNPACK_ALIGNMENT, 8);
Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_WRAP_S, Gl.GL_REPEAT);
Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_WRAP_T, Gl.GL_REPEAT);
// Generate actual texture with or without mipmaps
if (mipmap)
{
Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_MIN_FILTER, Gl.GL_LINEAR_MIPMAP_LINEAR);
Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_MAG_FILTER, Gl.GL_LINEAR);
if (resized)
Glu.gluBuild2DMipmaps(Gl.GL_TEXTURE_2D, Gl.GL_RGBA8, tex._width, tex._height,
Gl.GL_BGRA, Gl.GL_UNSIGNED_BYTE, tex._pow2Texels);
else
Glu.gluBuild2DMipmaps(Gl.GL_TEXTURE_2D, Gl.GL_RGBA8, tex._width, tex._height,
Gl.GL_BGRA, Gl.GL_UNSIGNED_BYTE, tex._texels);
}
else
{
Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_MAG_FILTER, Gl.GL_NEAREST);
Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_MIN_FILTER, Gl.GL_NEAREST);
if (resized)
Gl.glTexImage2D(Gl.GL_TEXTURE_2D, 0, Gl.GL_RGBA8, tex._width, tex._height,
0, Gl.GL_BGRA, Gl.GL_UNSIGNED_BYTE, tex._pow2Texels);
else
Gl.glTexImage2D(Gl.GL_TEXTURE_2D, 0, Gl.GL_RGBA8, tex._width, tex._height,
0, Gl.GL_BGRA, Gl.GL_UNSIGNED_BYTE, tex._texels);
}
return true; |