Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Android opengl kvadrat

[es] :: Java :: Android opengl kvadrat

[ Pregleda: 2792 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

nekicneko99
Programer - ucenik
ETS Mihajlo Pupin
Novi Sad Srbija

Član broj: 323579
Poruke: 108
*.dynamic.sbb.rs.



Profil

icon Android opengl kvadrat27.03.2015. u 22:09 - pre 109 meseci
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]
 
Odgovor na temu

nekicneko99
Programer - ucenik
ETS Mihajlo Pupin
Novi Sad Srbija

Član broj: 323579
Poruke: 108
*.dynamic.sbb.rs.



Profil

icon Re: Android opengl kvadrat01.04.2015. u 21:55 - pre 109 meseci
Niko ne zna gde gresim?

 
Odgovor na temu

Rapaic Rajko
Bgd

Član broj: 4105
Poruke: 810
95.180.99.*



+62 Profil

icon Re: Android opengl kvadrat01.04.2015. u 22:58 - pre 109 meseci
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
 
Odgovor na temu

nekicneko99
Programer - ucenik
ETS Mihajlo Pupin
Novi Sad Srbija

Član broj: 323579
Poruke: 108
*.dynamic.sbb.rs.



Profil

icon Re: Android opengl kvadrat02.04.2015. u 19:05 - pre 109 meseci
Ne, nije to.
Tu crtam kvadrat (dva trougla), ne postoji GL10.GL_SQUARE ili GL10.GL_RECTANGLE, kao ni GL10.GL_POLIGON.
 
Odgovor na temu

Rapaic Rajko
Bgd

Član broj: 4105
Poruke: 810
95.180.99.*



+62 Profil

icon Re: Android opengl kvadrat03.04.2015. u 23:01 - pre 109 meseci
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
 
Odgovor na temu

nekicneko99
Programer - ucenik
ETS Mihajlo Pupin
Novi Sad Srbija

Član broj: 323579
Poruke: 108
*.dynamic.sbb.rs.



Profil

icon Re: Android opengl kvadrat06.04.2015. u 14:21 - pre 109 meseci
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
 
Odgovor na temu

[es] :: Java :: Android opengl kvadrat

[ Pregleda: 2792 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.