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

04.04.2015, 12:33

c++/SDL2/OpenGL ES -> 2 Fragen mal so ...

Hallo ich bin recht neu was das Thema OpenGL ES 1 angeht, mache aber Fortschritte und habe dazu noch ein paar
fragen..

Ich bin momentan an ein Punkt wo ich eine Camera Function brauche.
im Ineternet fand ich folgenden interessanten CodeSchnippel


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
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
void setCamera()
{
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glRotatef(CAMERA_X.orientation[0], 1,0,0);
glRotatef(CAMERA_X.orientation[1], 0,1,0);
glRotatef(CAMERA_X.orientation[2], 0,0,1);
glTranslatef(-CAMERA_X.position[0],-CAMERA_X.position[1],CAMERA_X.position[2]);
}
 
 
void checkKeyPresses()
{
 
if (GetAsyncKeyState(VK_LEFT) )
{
CAMERA_X.position[0] += sin(DEGTORAD(CAMERA_X.orientation[1]-90)) * linearSpeed;
 
CAMERA_X.position[2] += cos(DEGTORAD(CAMERA_X.orientation[1]-90)) * linearSpeed;
}
 
if (GetAsyncKeyState(VK_RIGHT))
{
CAMERA_X.position[0] += sin(DEGTORAD(CAMERA_X.orientation[1]+90)) * linearSpeed;
CAMERA_X.position[2] += cos(DEGTORAD(CAMERA_X.orientation[1]+90)) * linearSpeed;
}
 
if (GetAsyncKeyState(VK_UP))
{
CAMERA_X.position[0] += sin(DEGTORAD(CAMERA_X.orientation[1])) * linearSpeed;
CAMERA_X.position[2] += cos(DEGTORAD(CAMERA_X.orientation[1])) * linearSpeed;
}
 
if (GetAsyncKeyState(VK_DOWN) )
{
CAMERA_X.position[0] -= sin(DEGTORAD(CAMERA_X.orientation[1])) * linearSpeed;
CAMERA_X.position[2] -= cos(DEGTORAD(CAMERA_X.orientation[1])) * linearSpeed;
}
 
if (GetAsyncKeyState(VK_INSERT))
{
linearSpeed += .1;
angularSpeed += .1;
}
 
if (GetAsyncKeyState(VK_DELETE))
{
if (!(linearSpeed < 0)) linearSpeed -= .1;
if (!(angularSpeed < 0)) angularSpeed -= .1;
}
}


-> wie funktioniert das mit der doppel.variabel[+array] ??
ich mein wie muss ich das Integieren ?? int position = 0 , int pos_x[0] ???

//---------------------------


Für ein Cunck hab ich 5x5x5 Cubes folgendermaße geRendert:

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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
...
static void cube()
{
 ...
}
 
int chunk_x = 5;
int chunk_y = 5;
int chunk_z = 5;
 
float B_SIZE = 0.25f; //abstand
 
void Render(Uint32 time)
{
   glClearColor(0.0, 0.0, 0.0, 1.0);
   glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 
   glMatrixMode(GL_MODELVIEW);
   glLoadIdentity();
 
   int i, j,k;
 
   for (i=0; i<chunk_x; i++)
   {
     for (j=0; j<chunk_y;  j++)
     {
       for (k=0; k<chunk_z;  k++)
       {
         glPushMatrix();
           glTranslatef(j*B_SIZE,i*B_SIZE,k*B_SIZE); //  i und j müssen vertauscht werden
                                                     // dann stellt der das richtig x,y,z sonst ist y,x,z
                                                     //  ... auch komisch..
           cube();
         glPopMatrix();
       }
      }
    }
}
...


ist das richtig so ?? -> es tuts zumindes :D

-> das ganze funktioniert anschein nur weil ich glPuschMatrix() sowie glPopMatrix()
benutze ... irgendwer meinte mal das die beiden Funktionen durch glLoadIdentity und glMatrixMode
ersetzt wurden bzw nicht mehr gäbe ... jetz bin ich verwirrt

ps: habs schonmal im c++ forum gepostet ... die tage ... keine antwort :D

ich hoffe IHR könnt mir helfen :golly:

2

04.04.2015, 13:51

Was meinst du mit dopel.varabel[+array]? glPush und PopMatrix tun dir die aktuell ausgewählte Matrix auf den Matrizenstack/Nehmen die oberste davon und ersetzen die Aktuelle. Vielleicht solltest du noch mal lesen was es mit Matrizen in OpenGL auf sich hat ;) (übrigens kannst du dir auch mal moderneres OpenGL angucken, aber vllt erst später...) Ansonsten empfehle ich dir weierhin die Grundlagen von C++ zu zu lernen.

3

04.04.2015, 14:45

mit doppel.varabel[+array] meinte ich das , was in der glTranlatef/glRotate steht

Quellcode

1
2
3
4
5
glRotatef(CAMERA_X.orientation[0], 1,0,0);

glRotatef(CAMERA_X.orientation[1], 0,1,0);

glRotatef(CAMERA_X.orientation[2], 0,0,1);


wie kann ich das selbst benutzen ?

ich hab nochnie eine variable gesehn, wo dannach mit einen punkt + einer weiteren variable hinzugefügt wird + zusätzlichen arrary

-> ich finde das sehr sehr schlau gemacht - und möchte das gerne selbst benutzen

und modernes opengl ist recht komisch programmiert ..
da ist das auch so mit son punkt

z.b.

gl12.gltranslatef ...

-> wie heisst diese art von programmiere eigentlich ?

ich kenn das nur so: Void spieler {int x ,int y ...}

aber immer wieder treffe ich auf sowas:

void spieler::position ...

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Patty1991« (04.04.2015, 14:56)


4

04.04.2015, 14:58

Dann wäre es mal an der Zeit die Grundlagen von C++ zu lernen. Denn das sind die grundlegendsten Grundlagen der Grundlagen ;)

5

05.04.2015, 13:35

Dann zeig mit doch mal unter Grundwissen , wo ich dieses Grundwissen finde ... :hmm: :search:
und jetz komm mir nicht mit irgendwecheln seiten , wo gezeigt wird , wie man Variablen auf dem bildschirm darstellt bzw. man
sie mithilfe von printf wieder zusammenrechnen kann.. toll

-> ich willl mehr über solche sachen wissen -> doppenl.variable[+array] sowie Void funtion1::function2

Warum gibt es dieses Forum überhaupt , wenn jedesmal gesagt wird ... grundkenntnisse würden fehelen ...
ich mein ... wer schreibt dann noch freiwillig hier rein ... ODER... habt ihr etwa kein bock anderen leuten zuzeigen wie das geht ? ... -> das geht an bestimmte "Forum-Wächter"

Ich will nicht frech werden aber mantchmal scheint es echt so , als würden informartiker gerne unter sich bleiben.. :fie: :thinking:

-> mehrmals hab ich jetz miterlebt , wie solche leute anderen leuten ständig alles nur schwer machen bzw. nichts erklären wollen und einen nur für dumm halten

-> hab son fall auch in der Familie ... (jedes weihnachten kommt irgend nen neuen komplizierten technik scheiss bei meiner oma hin , den sie sowas von nicht bruacht, bzw. jedes mal
muss dann wieder alles neu eingestellt werden, weil man es ja so nicht lassen konnte .z.b Wlan schlüssel ect..)


Bitte mal dazu eine Formale Stellungnahme ...

Gruss: Patrick

6

05.04.2015, 14:27

Dir fehlen aber wirklich die Grundlagen, die du aber nicht in Foren erfragen sollst, sondern am Besten mit einem Buch. Auch nicht irgendwelche online Videotutorials, sondern ein Buch. Hier gibt es auch eine gute Büchersammlung, guck mal nach. Gerne helfen wir, wenn du etwas nicht verstehst, aber hier fehlen massiv Grundlagen, die du wahrscheinlich zusammengesammelt hast. Jeder mit Grundlagen weiß, dass printf nichts mit zusammenrechnen zutun hat und man es gar nicht erst benutzen soll. Was du fragst sind wirkliche Grundlagen, so glaub mir doch ^^

Tobiking

1x Rätselkönig

  • Private Nachricht senden

7

05.04.2015, 23:40

Warum gibt es dieses Forum überhaupt , wenn jedesmal gesagt wird ... grundkenntnisse würden fehelen ...
ich mein ... wer schreibt dann noch freiwillig hier rein ... ODER... habt ihr etwa kein bock anderen leuten zuzeigen wie das geht ? ... -> das geht an bestimmte "Forum-Wächter"

Es ist ein Unterschied, ob jemand ein Thema nicht ganz verstanden hat oder dazu gar keine Ahnung hat. Ersteres kann man in ein paar Sätzen beheben. Anderes braucht mehrere Seiten, Beispiele etc. so wie es in einem Buch enthalten ist. Deswegen wird in dem Fall darauf verwiesen ein gutes Buch zu lesen. Dafür werden Bücher geschrieben.

-> ich willl mehr über solche sachen wissen -> doppenl.variable[+array] sowie Void funtion1::function2

Da kannst du dir das Thema Klassen angucken. Aber du tust dir keinen Gefallen damit das Thema nur so weit anzuschauen, dass du den vorliegenden Code verwenden kannst. Klassen sind ein zentraler Bestandteil der Objektorientierten Programmierung und damit auch Kern jeglicher Struktur in deinem Code. Da sollte man schon wissen was alles möglich ist und wie es funktioniert.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

8

06.04.2015, 09:22

das geht an bestimmte "Forum-Wächter"
Jetzt würde ich gern wissen wer denn diese Wächter genau sind und was sie Dir genau getan haben, dass Du hier so ausflippen musst.

In jedem vernünftigen Buch über C++ wird erklärt, wie man mit Structs und Klassen umgeht und genau das ist es, was Du hier erfragen willst. Das Forum ist sicherlich für Fragen da, aber wir sind kein interaktives Tutorial, was jedem erklärt, wie er Member von Klassen anspricht (Punkt-Operator) oder wie Methoden für Klassen definiert werden (Klasse::Methode). Das geht im Umfang viel zu weit und es ist für uns unnötig dies zu beschreiben, da es eben Bücher gibt, in denen genau das schon wundervoll detailliert erledigt wurde.

Es kann auch irgendwie nicht angehen, dass Du hier total ausrastest, nur weil Dir jemand die Wahrheit sagt. Structs und Klassen nicht zu beherrschen ist für C++ eben ein No-Go, denn das sind essentielle Teile und absolute Grundlagen für C++. Statt die Schuld auf andere zu schieben, fass Dir einfach mal an die eigene Nase. Für die Probleme in Deiner Familie sind wir übrigens auch nicht zuständig oder verantwortlich. Deinen Familien-Frust hier auszulassen finde ich äußerst unangebracht.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »BlueCobold« (06.04.2015, 09:28)


Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

9

06.04.2015, 13:29

Bambi fang doch bitte damit an deine Beiträge noch mal zu lesen bevor du sie abschickst.
Zum Thema, vielleicht ist ja das Buch von Heiko Kalista was für dich. Es ist recht kurz und am Ende kommt gibts ein Beispielprojekt mit SDL. Sicherlich wäre ein dickes Buch zum Thema auch nicht verkehrt aber so bleibt die Motivation vielleicht besser erhalten.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

10

06.04.2015, 18:23

Da hast du schon recht mit. Aber hier fehlen ja die Grundlagen und da würde das Buch denke ich schon passen. Sicherlich würde ein dickeres Buch mit mehr Informationen noch besser sein aber auf mich wirkt das ganze ein wenig so als hätte der TE nicht unbedingt das Interesse viel zu lernen bevor es "richtig" los geht. Dann ist so ein Einstieg vielleicht erst mal geeigneter. Wer weiß.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

Werbeanzeige