Du bist nicht angemeldet.

Werbeanzeige

1

01.03.2015, 19:46

3D Würfel erstellen mit for-schleife OPENGL ES

Hallo,
ich hoffe ihr könnt mir weiter helfen, denn ich hab folgendes problem:

Zurzeit versuche ich ein Cube(OpenGL ES) mithilfe einer forschleife mehrdimensional
wieder zugeben - sprich: sie sollen zusammen einen 5x5x5 Würfel bilden

->das problem dabei ist: dass ich keine einfache Fläche erstellen kann

C-/C++-Quelltext

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
   static void cube(float x,float y,float z)
 {
  ...
    glTranslatef(x,y,z)
  ...
 }

void render()
{
 ...
 glLoadIdentity(); // sorgt dafür dass der Cube bei der positionsübergabe (Translation) nicht aus dem screen saußt
  ...

   for (i=0; i<5; i++)
   {
     cube(0.5f,0.0f,0.0f); //würde hier i*0.0f stehen dann würden 5 würfel +5weitere mit mehr und mehr abstand gerendert werden

    for (j=0; j<5; j++)
    {
     cube(0.0f,0.5f,0.0f) 
    }
   }
...
}
  


das ergebnis:

Quellcode

1
2
3
4
5
#####
         #####
                  #####
                           #####
                                    #####

Wie kann ich meinen cube richtig rendern
mit

C-/C++-Quelltext

1
glTranslatef(x,y,z)

hab ich auch schon in der For-Schleife experimentirt
aber nichts :dash: :dash:

David Scherfgen

Administrator

Beiträge: 10 313

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

2

01.03.2015, 19:52

Du musst erst einmal verstehen, was glTranslatef eigentlich macht. Es gibt in OpenGL einen Matrix-Stack. Google mal danach und mach dich darüber schlau. Dann wirst du auch den Fehler finden.

Julién

Alter Hase

Beiträge: 723

Wohnort: Bayreuth

Beruf: Student | Hilfswissenschaftler in der Robotik

  • Private Nachricht senden

3

01.03.2015, 20:11

Falls du die Möglichkeit hast OpenGL ES 2 zu verwenden, bzw. höher,
dann würde ich direkt mit den Shadern bzw. Uniforms derer arbeiten.

Außerdem kleiner Tipp:
Versuche VBO (sollte es die in OGL ES 1 schon geben).
I write my own game engines because if I'm going to live in buggy crappy filth, I want it to me my own - Ron Gilbert

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Julién« (01.03.2015, 20:17)


4

02.03.2015, 17:05

:P 8) HABS !!!

Danke für den Tipp mit dem STACK !!

hatte glPushMatrix() und glPopMatrix() vergessen

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void Render();
{
...
glLoadIdentity();

int i,j;
int chunk = 10;
float size = 0.5f;

   for (i=0; i<chunk; i++)
   {
    for (j=0; j<chunk; j++)
    {
    glPushMatrix();
    glTranslatef(i*size,j*size,0.0f); 
    cube();
   glPopMatrix(); 
    }
 }
...
}


und ja ich kann" auch auf OpenGL Es 2 zugreifen aber ich will nicht schonwieder was neues lernen - ich verteh nun C++ / sdl1,sdl2 ,teils opengl - oengles und wollte eigentlich mal vor einigen jahren "nur" was fürs handy machen am besten mit 2d .. jetzt mit 3d ;)

lade mal im playstor die sdl_plugin für ccTools runter , da im Example sind sehr gute beispiele drin ... das GLES2 z.b. hat fast mehr als 3-400 zeilen ..
die bespiele sind in C4Droid ausführbar wenn man den #include<sdl> pfad zu #include <SDL2/sdl.h> macht -> SDL2/ zusätzlich halt.


(Link)

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Patty1991« (02.03.2015, 17:29)


DeKugelschieber

Community-Fossil

Beiträge: 2 664

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

5

02.03.2015, 17:56

Naja den Matrix Stack gibt es ja "eigentlich" nicht mehr.
Du wirst wahrscheinlich mehr wollen als einen Würfel, guck dir dazu lieber gleich aktuelles/modernes OpenGL an (Buffer, Shader, eigene Matrixklasse, ...).

Werbeanzeige