Note that there are some explanatory texts on larger screens.

plurals
  1. POAndroid OpenGL ES 1.1 white box textures
    primarykey
    data
    text
    <p><br> I am having an issue where textures from the resources become just white. The issue only seems to occur on phones (Droid-X for sure), but it works just fine on the emulator. I have researched this issue for days and tried so many things. <br> <br> Textures are POT ranging from 8x8 to 128x128 <br> Textures have been in res/drawable, res/drawable-nodpi and res/raw <br> Tried with and without this in the manifest file:</p> <pre><code>&lt;supports-screens android:anyDensity="true" /&gt; </code></pre> <p><br> I am at a complete loss on this.</p> <p>Here is the code I am using <br> gl is GL10 and gl11 is GL11 <br> <br></p> <pre><code>During onSurfaceCreated gl.glEnable(GL10.GL_TEXTURE_2D); gl.glEnable(GL10.GL_BLEND); gl.glDisable(GL10.GL_DEPTH_TEST); gl.glDisable(GL10.GL_DITHER); gl.glDisable(GL10.GL_LIGHTING); gl.glShadeModel(GL10.GL_FLAT); gl.glClearColor(0.00f, 0.00f, 0.00f, 1.00f); gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_DST_ALPHA); gl.glOrthof(-1, 1, -1, 1, -1, 1); gl.glColor4f(0.5f, 0.5f, 0.5f, 0.5f); gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MIN_FILTER, GL10.GL_NEAREST); gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MAG_FILTER, GL10.GL_NEAREST); gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_S, GL10.GL_CLAMP_TO_EDGE); gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_T, GL10.GL_CLAMP_TO_EDGE); gl.glTexEnvf(GL10.GL_TEXTURE_ENV, GL10.GL_TEXTURE_ENV_MODE, GL10.GL_REPLACE); gl.glFrontFace(GL10.GL_CCW); gl.glEnableClientState(GL10.GL_VERTEX_ARRAY); gl.glEnableClientState(GL10.GL_TEXTURE_COORD_ARRAY); </code></pre> <p>During onSurfaceChanged</p> <pre><code>gl.glMatrixMode(GL10.GL_PROJECTION); gl.glLoadIdentity(); gl.glMatrixMode(GL10.GL_MODELVIEW); gl.glLoadIdentity(); gl.glViewport(0, 0, width, height); </code></pre> <p>Generating the VBO:</p> <pre><code>public final float vertices[] = { -1.0f, -1.0f, 1.0f, 1.0f, -1.0f, 1.0f, -1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f }; public float textureCoord[] = { 0.0f, 0.0f, 0.0f, 1.0f, 1.0f, 0.0f, 1.0f, 1.0f }; public final byte indices[] = { 0, 1, 3, 0, 3, 2 }; verticesBuffer = ByteBuffer.allocateDirect(vertices.length * Constants.FLOAT_SIZE).order(ByteOrder.nativeOrder()).asFloatBuffer(); textureCoordBuffer = ByteBuffer.allocateDirect(textureCoord.length * Constants.FLOAT_SIZE).order(ByteOrder.nativeOrder()).asFloatBuffer(); indicesBuffer = ByteBuffer.allocateDirect(indices.length).order(ByteOrder.nativeOrder()); // fill buffers verticesBuffer.put(vertices); textureCoordBuffer.put(textureCoord); indicesBuffer.put(indices); // set pointer positions verticesBuffer.position(0); textureCoordBuffer.position(0); indicesBuffer.position(0); // temp buffer array int[] buffer = new int[1]; // VERTICES BUFFER. gl11.glGenBuffers(1, buffer, 0); verticesBufferIndex = buffer[0]; gl11.glBindBuffer(GL11.GL_ARRAY_BUFFER, verticesBufferIndex); final int vertexSize = verticesBuffer.capacity() * Constants.FLOAT_SIZE; gl11.glBufferData(GL11.GL_ARRAY_BUFFER, vertexSize, verticesBuffer, GL11.GL_STATIC_DRAW); // TEXTURE COORD BUUFER gl11.glGenBuffers(1, buffer, 0); textureCoordBufferIndex = buffer[0]; gl11.glBindBuffer(GL11.GL_ARRAY_BUFFER, textureCoordBufferIndex); final int texCoordSize = textureCoordBuffer.capacity() * Constants.FLOAT_SIZE; gl11.glBufferData(GL11.GL_ARRAY_BUFFER, texCoordSize, textureCoordBuffer, GL11.GL_STATIC_DRAW); // clear buffer id gl11.glBindBuffer(GL11.GL_ARRAY_BUFFER, 0); // Unbind the array buffer. gl11.glBindBuffer(GL11.GL_ARRAY_BUFFER, 0); gl11.glGenBuffers(1, buffer, 0); // INDICES BUFFER indicesBufferIndex = buffer[0]; gl11.glBindBuffer(GL11.GL_ELEMENT_ARRAY_BUFFER, indicesBufferIndex); final int indexSize = indicesBuffer.capacity(); gl11.glBufferData(GL11.GL_ELEMENT_ARRAY_BUFFER, indexSize, indicesBuffer, GL11.GL_STATIC_DRAW); // Unbind the element array buffer. gl11.glBindBuffer(GL11.GL_ELEMENT_ARRAY_BUFFER, 0); gl11.glBindBuffer(GL11.GL_ARRAY_BUFFER, verticesBufferIndex); gl11.glVertexPointer(3, GL11.GL_FLOAT, 0, 0); gl11.glBindBuffer(GL11.GL_ARRAY_BUFFER, textureCoordBufferIndex); gl11.glTexCoordPointer(2, GL11.GL_FLOAT, 0, 0); gl11.glBindBuffer(GL11.GL_ELEMENT_ARRAY_BUFFER, indicesBufferIndex); BitmapFactory.Options sBitmapOptions = new BitmapFactory.Options(); sBitmapOptions.inPreferredConfig = Bitmap.Config.ARGB_4444; // many of these calls : Bitmap bitmap = BitmapFactory.decodeStream(resources.openRawResource(resourceID), null, sBitmapOptions); int[] textures = new int[1]; gl.glGenTextures(1, textures, 0); gl.glBindTexture(GL10.GL_TEXTURE_2D, textures[0]); mCropWorkspace[0] = 0; mCropWorkspace[1] = bitmap.getHeight(); mCropWorkspace[2] = bitmap.getWidth(); mCropWorkspace[3] = -bitmap.getHeight(); ((GL11) gl).glTexParameteriv(GL10.GL_TEXTURE_2D, GL11Ext.GL_TEXTURE_CROP_RECT_OES, mCropWorkspace, 0); GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, bitmap, 0); bitmap.recycle(); return texture[0]; // which gets stored into textureID for later </code></pre> <p>During onDrawFrame</p> <pre><code>gl.glClear(GL10.GL_COLOR_BUFFER_BIT); // and many of these gl11.glPushMatrix(); // transfomations gl11.glBindTexture(GL11.GL_TEXTURE_2D, textureID); gl11.glDrawElements(GL10.GL_TRIANGLES, indicesCount, GL10.GL_UNSIGNED_BYTE, 0); gl11.glPopMatrix(); </code></pre> <p><br> Sorry for all the code but I think everything is there.<br> Thank you,<br> Will</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

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