Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

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 382

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: 717

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 641

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