[ nekicneko99 @ 27.03.2015. 22:09 ] @
Poceo sam da pravim igru za android. Koristim openglr es 1.0.

Napravim aplikaciju, sve podesim. Napravim klasu triangle za crtanje trougla, ali imeni trebaju kvadrati na koje cu ucitavati texturu iz png fajlova (neso kao sprite), a to ne radi, opet crta trougao.
Evo ga kod, ne znam gde gresim:

Code:

package some.some.projectname;

import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.nio.FloatBuffer;
import java.nio.ShortBuffer;

import javax.microedition.khronos.opengles.GL10;


public class Rectangle
{
    private FloatBuffer vertexBuffer = null;
    private ShortBuffer indicesBuffer = null;
    private FloatBuffer colorBuffer = null;
    
    private int numOfIndices = 0;
    
    private float vertexList[] =
    {
        -1.0f, -1.0f, 0.0f,
        1.0f, -1.0f, 0.0f,
        1.0f, 1.0f, 0.0f,
        -1.0f, -1.0f, 0.0f
    };
    
    private short indexList[] =
    {
        0, 1, 2, 0, 2, 3
    };
    
    private float colorList[] =
    {
        1.0f, 0.0f, 0.0f, 1.0f,
        1.0f, 1.0f, 0.0f, 1.0f,
        0.0f, 1.0f, 0.0f, 1.0f
    };
    
    public Rectangle()
    {
        // Set vertex buffer
        ByteBuffer vbb = ByteBuffer.allocateDirect(vertexList.length * 4);
        vbb.order(ByteOrder.nativeOrder());
        vertexBuffer = vbb.asFloatBuffer();
        vertexBuffer.put(vertexList);
        vertexBuffer.position(0);
        
        // Set indices buffer
        numOfIndices = indexList.length;
        ByteBuffer tbibb = ByteBuffer.allocateDirect(numOfIndices * 2);
        tbibb.order(ByteOrder.nativeOrder());
        indicesBuffer = tbibb.asShortBuffer();
        indicesBuffer.put(indexList);
        indicesBuffer.position(0);
        
        // Set color buffer
        ByteBuffer cbb = ByteBuffer.allocateDirect(colorList.length * 4);
        cbb.order(ByteOrder.nativeOrder());
        colorBuffer = cbb.asFloatBuffer();
        colorBuffer.put(colorList);
        colorBuffer.position(0);
    }
    
    public void draw(GL10 gl)
    {
        gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
        gl.glEnableClientState(GL10.GL_COLOR_ARRAY);
        
        gl.glColorPointer(4, GL10.GL_FLOAT, 0, this.colorBuffer);
        gl.glVertexPointer(3, GL10.GL_FLOAT, 0, this.vertexBuffer);
        
        // Draw the Rectangle
        gl.glDrawElements(GL10.GL_TRIANGLES, this.numOfIndices,
                GL10.GL_UNSIGNED_SHORT, this.indicesBuffer);
        
        gl.glDisableClientState(GL10.GL_VERTEX_ARRAY);
        gl.glDisableClientState(GL10.GL_COLOR_ARRAY);
    }
}



Hvala unapred na pomoci.

[Ovu poruku je menjao nekicneko99 dana 28.03.2015. u 00:08 GMT+1]

[Ovu poruku je menjao nekicneko99 dana 28.03.2015. u 00:08 GMT+1]
[ nekicneko99 @ 01.04.2015. 21:55 ] @
Niko ne zna gde gresim?
[ Rapaic Rajko @ 01.04.2015. 22:58 ] @
Pa valjda niko nije koristio taj openglr lib; bar ja nisam.

Ali u kodu ovo mi bode oci:

Code:

        // Draw the Rectangle
        gl.glDrawElements(GL10.GL_TRIANGLES, this.numOfIndices,
                GL10.GL_UNSIGNED_SHORT, this.indicesBuffer);


Crtas Rectangle a pozivas tip GL10.GL_TRIANGLES, verovatno nema veze s vezom; opet kazem - nisam nikad to koristio.

Pozz
[ nekicneko99 @ 02.04.2015. 19:05 ] @
Ne, nije to.
Tu crtam kvadrat (dva trougla), ne postoji GL10.GL_SQUARE ili GL10.GL_RECTANGLE, kao ni GL10.GL_POLIGON.
[ Rapaic Rajko @ 03.04.2015. 23:01 ] @
A sta postoji u tom lib-u?

Ako je GL10.GL_TRIANGLES, onda bi po nekoj logici trebalo da bude GL10.GL_RECTANGLE(S), GL10.GL_POLIGON(S) itd.
Prepustam loptu nekom ko je s ovim lib-om radio .

Pozz
[ nekicneko99 @ 06.04.2015. 14:21 ] @
Uradio sam ispocetka kod i sada radi. Nema rectangles i poligons, nego se koristi GL10.GL_TRIANGLES ili GL10.GL_TRIANGLE_STRIP.
Znam, malo nelogicno (da ne kazem glupavo), ali staces. U SDL-u lepo kazes glBegin(GL_POLYGON) i crtas sta god oces, a ne ovo, mucenje.


Ako nekome treba kod neka kaze, pa cu okaciti.

P.S.
Koristio sam gl.glDrawArray