Note that there are some explanatory texts on larger screens.

plurals
  1. POTexture mapping problem in OpenGLES
    text
    copied!<p>I'm very new to OpenGL and I'm using managed OpenGLES wrapper written for Windows Mobile phones (<a href="http://www.koushikdutta.com/2008/08/net-compact-framework-wrapper-for.html" rel="nofollow noreferrer">OpenGLES Windows Mobile</a>). I have a simple task of drawing a square (got that) and texturing it with an image from the disk, so I basically just want to display a jpg file on the screen. However every time I try to do it, I get a white square displayed, with no texture. I verified that my texture loads correctly (using some of the existing examples, and just replacing texture with mine). So I think my problem is correctly mapping texture to the object. Here's my code (functions and objects removed to make it simple):</p> <pre><code> private Bitmap image = new Bitmap(@"\Storage Card\someimage.jpg"); using (MemoryStream ms = new MemoryStream()) { Image.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp); myImage = Texture.LoadStream(ms, false); } gl.ShadeModel(gl.GL_SMOOTH); gl.ClearColor(0.0f, 0.0f, 0.0f, 0.5f); gl.BlendFunc(gl.GL_SRC_ALPHA, gl.GL_ONE_MINUS_SRC_ALPHA); gl.Hint(gl.GL_PERSPECTIVE_CORRECTION_HINT, gl.GL_NICEST); glLocation.Clear(); gl.Clear(gl.GL_COLOR_BUFFER_BIT); gl.MatrixMode(gl.GL_PROJECTION); gl.LoadIdentity(); gl.Orthof(0, ClientSize.Width, ClientSize.Height, 0, 0, 1); gl.Disable(gl.GL_DEPTH_TEST); gl.MatrixMode(gl.GL_MODELVIEW); gl.LoadIdentity(); float[] rectangle = new float[] { 0, 0, myImage.Width, 0, 0, myImage.Height, myImage.Width, myImage.Height }; float[] texturePosition = new float[] { 0, 0, myImage.Width, 0, 0, myImage.Height, myImage.Width, myImage.Height }; //Bind texture gl.BindTexture(gl.GL_TEXTURE_2D, myImage.Name); gl.TexParameteri(gl.GL_TEXTURE_2D, gl.GL_TEXTURE_MIN_FILTER, gl.GL_LINEAR); gl.TexParameteri(gl.GL_TEXTURE_2D, gl.GL_TEXTURE_MAG_FILTER, gl.GL_LINEAR); //move cursor glLocation.MoveCursor(Location.X, Location.Y); gl.EnableClientState(gl.GL_TEXTURE_COORD_ARRAY); gl.EnableClientState(gl.GL_VERTEX_ARRAY); //draw square and texture it. fixed (float* rectanglePointer = &amp;rectangle[0], positionPointer = &amp;texturePosition[0]) { gl.TexCoordPointer(2, gl.GL_FLOAT, 0, (IntPtr)positionPointer); gl.VertexPointer(2, gl.GL_FLOAT, 0, (IntPtr)rectanglePointer); gl.DrawArrays(gl.GL_TRIANGLE_STRIP, 0, 4); } gl.DisableClientState(gl.GL_TEXTURE_COORD_ARRAY); gl.DisableClientState(gl.GL_VERTEX_ARRAY); egl.SwapBuffers(myDisplay, mySurface); gl.Clear(gl.GL_COLOR_BUFFER_BIT); </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload