Acties:
  • 0 Henk 'm!

  • Arjan
  • Registratie: Juni 2001
  • Niet online

Arjan

copyright is wrong

Topicstarter
Ik wilde eens proberen een simpel opengl programmatje te maken voor android. Aangezien ik de nodig ervaring met opengl heb, leek mij dit geen probleem. Nu heb ik echter een class die volgens mij alles doet wat er nodig is om wat op het scherm te tekenen, echter zie ik niets!

Aan de hand van glClearColor kan ik zien dat het scherm weldegelijk gecleared wordt alleen verschijnen er geen polygonen, hoewel er volgens mij toch een vierkant getekend zou moeten worden in de linkerbovenhoek. (25x25px)
Het moet iets simpels zijn dat ik over het hoofd zie, dus ik hoop dat iemand anders het wel ziet :p

Dit is de testclass:
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
package testapp.lang;

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

import javax.microedition.khronos.egl.EGLConfig;
import javax.microedition.khronos.opengles.GL10;

import android.opengl.GLSurfaceView;

class glrender implements GLSurfaceView.Renderer
{
    public glrender()
    {
        Float tmp[] =
        {
            (float)-0.5, (float)-0.5,
            (float)-0.5, (float) 0.5,
            (float) 0.5, (float)-0.5,
            (float) 0.5, (float) 0.5
        };
        
        ByteBuffer bb = ByteBuffer.allocateDirect( tmp.length * Float.SIZE );
        bb.order( ByteOrder.nativeOrder() );
        vertices = bb.asFloatBuffer();
        vertices.position( 0 );
    }

    public void onDrawFrame( GL10 gl )
    {
        gl.glClear( GL10.GL_COLOR_BUFFER_BIT );

        gl.glMatrixMode( GL10.GL_MODELVIEW );
        
        gl.glLoadIdentity();

        gl.glColor4f( 1, 0, 0, 1 );

        gl.glScalef( 50, 50, 1 );

        gl.glEnableClientState( GL10.GL_VERTEX_ARRAY );

        gl.glVertexPointer( 2, GL10.GL_FLOAT, 0, vertices );

        gl.glDrawArrays( GL10.GL_TRIANGLE_STRIP, 0, 4 );

        gl.glDisableClientState( GL10.GL_VERTEX_ARRAY );
    }

    public void onSurfaceChanged( GL10 gl, int width, int height )
    {
        gl.glViewport( 0, 0, width, height );
        
        gl.glMatrixMode( GL10.GL_PROJECTION );
        
        gl.glLoadIdentity();
        
        gl.glOrthox( 0, width, height, 0, -1, 1 );
    }

    public void onSurfaceCreated( GL10 gl, EGLConfig config )
    {
        gl.glClearColor( 0, 0, 0, 0 );

        gl.glDisable( GL10.GL_CULL_FACE );

        gl.glDisable( GL10.GL_DEPTH_TEST );
        
        gl.glDisable( GL10.GL_TEXTURE_2D );
    }

    private FloatBuffer vertices;
}

oprecht vertrouwen wordt nooit geschaad


Acties:
  • 0 Henk 'm!

  • ReenL
  • Registratie: Augustus 2010
  • Laatst online: 14-09-2022
Je bytebuffer bevat niet de tmp floats alleen de lengte van de array is geallocate

Acties:
  • 0 Henk 'm!

  • Arjan
  • Registratie: Juni 2001
  • Niet online

Arjan

copyright is wrong

Topicstarter
ik kan wel janken ;)
ik vrees dat die regel er ergens tussenuit is gevallen..
Java:
1
vertices.put( tmp );

bedankt!

oprecht vertrouwen wordt nooit geschaad


Acties:
  • 0 Henk 'm!

  • ReenL
  • Registratie: Augustus 2010
  • Laatst online: 14-09-2022
Haha overkomt iedereen weleens :)

Succes met de app!