WinFuture-Forum.de: C/glut - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
  • 2 Seiten +
  • 1
  • 2

C/glut


#1 Mitglied ist offline   gi$a 

  • Gruppe: Mitglieder
  • Beiträge: 16
  • Beigetreten: 02. März 06
  • Reputation: 0

geschrieben 02. März 2006 - 14:58

Hallo,

Test.c weiter unten

Dieser Beitrag wurde von gi$a bearbeitet: 19. März 2006 - 16:27

0

Anzeige



#2 Mitglied ist offline   Witi 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.947
  • Beigetreten: 13. Dezember 04
  • Reputation: 43
  • Geschlecht:Männlich
  • Wohnort:Kingsvillage
  • Interessen:Frickeln

geschrieben 02. März 2006 - 15:14

Wo rufst du denn hideIt bzw showIt auf?
0

#3 Mitglied ist offline   gi$a 

  • Gruppe: Mitglieder
  • Beiträge: 16
  • Beigetreten: 02. März 06
  • Reputation: 0

geschrieben 02. März 2006 - 17:49

Das ist ja mein Problem.
Ich habe versucht sie aufzurufen aber irgendwie schaffe ich es nicht.
Wie kann ich es aufrufen?
0

#4 Mitglied ist offline   gi$a 

  • Gruppe: Mitglieder
  • Beiträge: 16
  • Beigetreten: 02. März 06
  • Reputation: 0

geschrieben 02. März 2006 - 20:57

also mein Problem ist folgendes:
Ich wollte es so machen das Glut die Funktion showIt aufruft.
Vielleicht als Initialisierung (Global)?
Kann mir da jemand helfen?
0

#5 Mitglied ist offline   Witi 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.947
  • Beigetreten: 13. Dezember 04
  • Reputation: 43
  • Geschlecht:Männlich
  • Wohnort:Kingsvillage
  • Interessen:Frickeln

geschrieben 03. März 2006 - 07:56

z.b. in der main?
0

#6 Mitglied ist offline   gi$a 

  • Gruppe: Mitglieder
  • Beiträge: 16
  • Beigetreten: 02. März 06
  • Reputation: 0

geschrieben 03. März 2006 - 09:17

Morgen,

ich habe in main schon bei GlutTimerFunc die Funktion showIt aufgerufen statt p2f.
Und in showIt habe ich hideIt aufgerufen.
Das Ergebnis: Das Fenster wird für drei Sekunden mit der Meldung angezeigt und verschwindet dann wieder für eine Sekunde.
Ich wollte eigentlich, die Meldungen und nicht das Fenster verschwinden lassen und showIt nicht von main aus aufrufen.
Gibt es eine Möglichkeit showIt nicht von main aufzurufen und wieso bekomme ich meine Meldungen nicht zu sehen die ur Farbe passen bei der Funktion setMessage.
Danke und Gruß.
0

#7 Mitglied ist offline   Witi 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.947
  • Beigetreten: 13. Dezember 04
  • Reputation: 43
  • Geschlecht:Männlich
  • Wohnort:Kingsvillage
  • Interessen:Frickeln

geschrieben 03. März 2006 - 09:29

Hui...ist schon was her, wo ich mit OpenGL gearbeitet habe...
Wenn ich mich nicht irre, ist glutDisplayFunc bzw die Methode die als Parameter angegeben wird quasi der "MainLoop".

Warum implementierst du nicht einfach diese Methoden in der Methode display?
0

#8 Mitglied ist offline   gi$a 

  • Gruppe: Mitglieder
  • Beiträge: 16
  • Beigetreten: 02. März 06
  • Reputation: 0

geschrieben 03. März 2006 - 09:48

Das habe ich schon versucht aber das führt zu Laufzeitproblemen.
Ich will eigentlich aus einer Liste Meldungen ausgeben lassen die zur Farbe passen aus setMessage.
Ich bekomme aber nur die Meldung aus char Message [] [].
Ich hänge mal den C Code und die Header Datei an.

Gruß

Dieser Beitrag wurde von gi$a bearbeitet: 19. März 2006 - 16:28

0

#9 Mitglied ist offline   mo 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.796
  • Beigetreten: 17. Juni 02
  • Reputation: 0
  • Wohnort:Ulm / BaWü

geschrieben 04. März 2006 - 10:31

gisa, häng das Archiv bitte nochmal an. Das ist nicht ganz komplett ;D

bianca:~/Desktop/lala mo$ unrar x ../Meldungen.rar

UNRAR 3.51 freeware Copyright © 1993-2005 Alexander Roshal


Extracting from ../Meldungen.rar

Extracting Meldungen.c OK
Extracting Orakel.h 97%
Orakel.h - CRC failed
Unexpected end of archive
Total errors: 2


Einen Teil vom Archiv konnt ich trotzdem Entpacken.

Unter osX hab ich so meine Probleme mit glut... starte mal die Linux kiste. Editier gleich weiter...

Soo...
ohm, siehe:
http://pyopengl.sourceforge.net/documentat...Func.3GLUT.html

Du übergibst der Funktion p2f als Zeiger auf die Funktion, welches aber NULL ist:

Zitat

glutTimerFunc(3000, p2f, 1); //3000ms verzögerter Aufruf/ (1) wird an Timer Func übergeben

Dieser Beitrag wurde von mo bearbeitet: 04. März 2006 - 12:39

I'm mó. mo's good twin.
0

#10 Mitglied ist offline   gi$a 

  • Gruppe: Mitglieder
  • Beiträge: 16
  • Beigetreten: 02. März 06
  • Reputation: 0

geschrieben 04. März 2006 - 20:45

Hallo und Danke erstmal.
Mein Problem ist, dass ich zwar in meinem Programm starte aber nur die Meldung aus Char Message bekomme.
Ich setze in main p2f = showIt; und bei der Funktion showIt verweise ich auf hideIt.
Dann erscheint mein Fenster nach GluttimerFunc vorgaben und blitzt wieder auf.
Meine Frage dazu: Kann ich die Funktion showIt nicht so starten dass ich meinen globalen Bezeichner p2f auf die Funktion showIt verweise. Der globale Bezeichner ist NULL gesetzt. Muss aber nicht sein ich kann es doch auch mit was anderem Initialisiren oder?
Vielen Dank und Gruß
Gi$a

[attachment=12487:attachment]
0

#11 Mitglied ist offline   mo 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.796
  • Beigetreten: 17. Juni 02
  • Reputation: 0
  • Wohnort:Ulm / BaWü

geschrieben 05. März 2006 - 00:20

gisa, p2f=showIt; gibt dir das returnvalue von showIt in p2f. da showid nix zurückgibt müsste der compiler schon beim übersetzen meckern.

bitte häng doch mal den quelltext an, in dem das tatsächlich so von dir gemacht wird. im neuen steht davon nix.

ich versteh leider überhaupt nicht, wo das problem ist. und warum verwendest du überhaupt erst einen zeiger? übergib doch gleich die funktions-addressen an die timerfunktion.

es hilft auch oft ungemein, wenn man leserlichen code schreibt. wenn ein neuer codeblock beginnt, rückt man ihn normalerweise mit tab ein.
z.B.
if ( ausdruck ) {
	... :: ...
	if ( ausdruck ) {
		cerr << "alles putt" << endl;
	}
	... :: ...
}


liest sich einfach schöner als:
if(ausruck)
{
...::
if (ausdruck){
cerr << "alles kaputt" << end;
}
}


Zitat

Der globale Bezeichner ist NULL gesetzt. Muss aber nicht sein ich kann es doch auch mit was anderem Initialisiren oder?

klar, aber ich seh nirgendwo eine sinnvolle initialisierung. wenn die funktion an addresse NULL gestartet werden soll, dann geht das nunmal in die hose.
I'm mó. mo's good twin.
0

#12 Mitglied ist offline   gi$a 

  • Gruppe: Mitglieder
  • Beiträge: 16
  • Beigetreten: 02. März 06
  • Reputation: 0

geschrieben 05. März 2006 - 10:09

So hier ist es nochmal mo:
Das Programm läuft und der Compiler mecker nicht.

Zitat:
ich versteh leider überhaupt nicht, wo das problem ist. und warum verwendest du überhaupt erst einen zeiger? übergib doch gleich die funktions-addressen an die timerfunktion.

Wie soll ich die Funktionsadresse übergeben und an welche Timerfunktion?

Zitat:
klar, aber ich seh nirgendwo eine sinnvolle initialisierung. wenn die funktion an addresse NULL gestartet werden soll, dann geht das nunmal in die hose.

Womit kann ich es noch initialisieren?


[attachment=12494:attachment]

Vielen Dank für deine Hilfe und Gruß
Gi$a

Dieser Beitrag wurde von gi$a bearbeitet: 19. März 2006 - 16:27

0

#13 Mitglied ist offline   mo 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.796
  • Beigetreten: 17. Juni 02
  • Reputation: 0
  • Wohnort:Ulm / BaWü

geschrieben 06. März 2006 - 09:49

Zitat

Das Programm läuft und der Compiler mecker nicht.

Das tuts bei den meisten Fehlern :blush:

Zitat

Wie soll ich die Funktionsadresse übergeben und an welche Timerfunktion?

Na ich dachte, du willst über die glutTimerFunc eine Funktion aufrufen lassen? Die glutTimerFunc wird an drei Stellen aufgerufen, aber jedesmal mit p2f als Zeiger auf die Funktion die Aufgerufen werden soll, was zu diesem Zeitpunkt immer NULL ist.

z.B. könntest du, wenn du hideIt in 3 sekunden aufrufen möchtest folgendes machen:
glutTimerFunc(3000, &hideit, 1);

du könntest auch...
p2f = &hideit;
glutTimerFunc(3000, &hideit, 1);

An deiner Stelle würde ich möglichst bald auf C++ umsteigen. Das ist bei den kleineren Problemchen, die nicht so richtige OOP brauchen fast gleich zu programmieren und kann bei komplexeren Projekten alles schön verkapsel (OOP halt ^^).
I'm mó. mo's good twin.
0

#14 Mitglied ist offline   gi$a 

  • Gruppe: Mitglieder
  • Beiträge: 16
  • Beigetreten: 02. März 06
  • Reputation: 0

geschrieben 06. März 2006 - 12:38

ja das mache ich auch. Ich setze in showIt den Funktionszeiger auf hideIt.
Dies klappt auch :D
Aber wenn ich nun die Funktion setMessage ins Spiel bringen möchte klappt das ganze zusammenspiel nicht.
D.h. wenn ich in showIt den Zeiger p2f durch setMessage ersetze also in GlutTimerFunc. Dann binde ich die Funktion setMessage zwar mit ein aber ich muss dann dass Fenster erst verdecken und erst dann kommt durch die If Abfrage gewünschte Meldung Friede Freude Eierkuchen.
Kann ich nicht in hideIt den Zeiger auf setMessage zeigen und dann beim erneuten Afruf diese Meldung aus setMessage zeigen lassen mit Hilfe von showIt?
Du hast mein Problem sofort erkannt :D
Ansonsten wäre ja meine setMessage ohne Funktion oder besser ohne Gebrauch. :blush:

Dieser Beitrag wurde von gi$a bearbeitet: 06. März 2006 - 13:17

0

#15 Mitglied ist offline   mo 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.796
  • Beigetreten: 17. Juni 02
  • Reputation: 0
  • Wohnort:Ulm / BaWü

geschrieben 06. März 2006 - 16:49

achso, naja glut kann ja auch nicht gedankenlesen :blush:.
ruf einfach mal render(); am ende der setmessage funktion auf, sollte dann klappen.

wenn du auf die conio.h und getch() verzichtest und das #endif ORACEL_H durch #endif ersetzt läuft das ding auf auf linux ^^.
I'm mó. mo's good twin.
0

Thema verteilen:


  • 2 Seiten +
  • 1
  • 2

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0