Читаемый круг ближе к зрителю, а текстура имеет прозрачный фон.Режим смешивания OpenGL и буфер глубины
(Оба объекта представляют собой квадраты одинакового размера, только разные текстуры и х, z-координаты).
Я хочу:
Но у меня есть:
Я знаю, что я должен сделать что-то с режимами смешивания и, возможно, буфер глубины, но я не точно знаю, что. Кто-нибудь может мне помочь?
текущий код для загрузки текстуры:
public void initTexture(GL10 gl, Bitmap bitmap) {
gl.glEnable(GL10.GL_BLEND);
gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA);
int[] texture = new int[1];
gl.glGenTextures(1, texture, 0);
textureId = texture[0];
gl.glBindTexture(GL10.GL_TEXTURE_2D, textureId);
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_LINEAR);
gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_S, GL10.GL_REPEAT);
gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_T, GL10.GL_REPEAT);
GLUtils.texImage2D(GLES10.GL_TEXTURE_2D, 0, bitmap, 0);
bitmap.recycle();
}
соответствующей части рисунка, для каждого из этих объектов:
gl.glBindTexture(GL10.GL_TEXTURE_2D, textureId);
gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
gl.glEnableClientState(GL10.GL_TEXTURE_COORD_ARRAY);
gl.glFrontFace(GL10.GL_CW);
gl.glVertexPointer(3, GL10.GL_FLOAT, 0, verticesBuffer);
gl.glTexCoordPointer(2, GL10.GL_FLOAT, 0, textureBuffer);
gl.glDrawElements(GLES20.GL_TRIANGLES, indices.length, GLES10.GL_UNSIGNED_SHORT, indicesBuffer);
Спасибо!
Примечание: Я использую OpenGL ES 1.
Ничего не изменил, кроме того, цвет обоих объектов теперь ярче (например, пастель). – Ixx
ой, да, я думал о «glAlphaFunc», вы попробовали решение от Bartek? это кажется актуальным. – Guian
Да, но это не полно, и мои первые попытки ничего не улучшили ... попробуем больше, когда у меня будет время. – Ixx