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; | 
Partager