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

20.05.2009, 15:10

sigfault mit glut.h

Hi mal wieder

Guten Tag ich komme mal wieder mit einem sigfault zu euch, dieses mal scheint er jedoch etwas versteckter zu sein.

Also es geht darum, ich hab mich daran gemacht ein OpenGl Projekt zu starten, welches eine einfache 3D-Engine werden soll.

Dabei benutze ich wie gesagt opengl (2) und die glut library.

Alzu weit bin ich noch nicht gekommen, allerdings habe ich jetzt ein Problem das ich nicht zu lösen vermag.

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
#define _STDCALL_SUPPORTED
#define _M_IX86
#include <GL\glut.h>

graphic_window::graphic_window(int argc,char** argv,void keybord_func(unsigned char,int,int),void spec_keybord_func(int,int,int))
{
    error_report("graphic_window -> constructor");
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
    glutInitWindowSize(800,600);
    glutInitWindowPosition(0,0);
    glutCreateWindow("OpenGL-Window");
    glutDisplayFunc(display);
    glutIdleFunc(display);
    glutReshapeFunc (resize);
    glutKeyboardFunc (keybord_func);
    glutSpecialFunc (spec_keybord_func);
    init();
    glutMainLoop();
}

void graphic_window::init()
{
    error_report("graphic_window -> init");
    glClearColor(0.0, 0.0, 0.0, 0.0);
    glShadeModel(GL_SMOOTH);

    glViewport(0,0,800,600);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    gluPerspective(45.0f,(GLfloat)800/(GLfloat)600,10.0f,10000.0f);

    glEnable(GL_DEPTH_TEST);
    glPolygonMode (GL_FRONT_AND_BACK, GL_FILL);

    glEnable(GL_TEXTURE_2D);
}


Das sind 2 Funktionen die Die Initialisierung eines fensters übernehmen, darüber die makros die glut braucht.
der code wird ohne eine warnung oder fehler einwandfrei compiliert, aber in der init() funktion kommt bei dem ersten befehl ein Sigmentation Fault.

Wenn ich diesen ersten Befehl auskommentier, welches glClearColor() ist, dann ist der nächste Befehl der Ursprung des Sigfaults.

Meine recherchen im Internet haben bisher noch nicht viel erfolg gehabt, die meisten haben dieses Problem unter Ubuntu, ich benutze allerdings Windows XP Professional, und die 2. Fehlerquelle sind irgendwelche falschen versionen von irgendwas, kann ich bisher noch nciht ausschliesen, weis nämlcih nicht welche version von was falsch sein könnt.

ich habe glut von http://www.xmission.com/~nate/glut.html
und die libraris opengl32.lib und glu32.lib welche ich einbinden musste von http://www.hawksoft.com/download/ (mesa3lib)

vllt kann jeand schon so mir sagen wo mein fehler liegt, sonst habe ich noch eine frage die vllt weiterhilft, und zwar kam auf einer seite das binutils zu sprechen, und das ich da eine ganz spezielle version von brauche, die habe ic mir auch besorgt, aber da hab ich jetzt ein pack von dateien, und weis nciht wohin damit, fals das was damit zu tun haben kann, bräuchte ich eine kleine erklärung wie ich das installiere oder einbine oder was auch immer.

Hoffe es gibt hier nen schlauen kopf der mir helfen kann :D
genug Programmiert ist erst wen man nicht mehr weis wie man sich ohne Bildschirmausgabe artikuliert.

Chase

Alter Hase

Beiträge: 753

Wohnort: Nagaoka / Darmstadt / Düsseldorf

Beruf: fauler Studi

  • Private Nachricht senden

2

20.05.2009, 18:16

Re: sigfault mit glut.h

Sorry aber: Graphik, Construktor und Kode? :?
-> Graphic oder Grafik, Constructor oder Konstruktor, und Code oder Kot^^

Mal ne Frage: Ist graphic_window eine Klasse und rufst du die GL main loop im Konstruktor auf ?
"Have you tried turning it off and on again?"

3

20.05.2009, 19:51

hm joa jetzt wo dus sagst is seltsam aber ja ist ne klasse und ja ich ruf das im constructor auf, aber ich hab auchs chon mal versucht das ganze ohne klasse zu machen, da hatte ich das gleiche problem
genug Programmiert ist erst wen man nicht mehr weis wie man sich ohne Bildschirmausgabe artikuliert.

4

22.05.2009, 20:56

ok mal davon abgesehen das ich die glutmainlop im konstruktor aufrufe, kann mir jemand sagen woher genau diese sigfaults kommen?
genug Programmiert ist erst wen man nicht mehr weis wie man sich ohne Bildschirmausgabe artikuliert.

Chase

Alter Hase

Beiträge: 753

Wohnort: Nagaoka / Darmstadt / Düsseldorf

Beruf: fauler Studi

  • Private Nachricht senden

5

22.05.2009, 21:32

Ich hab noch nicht mit OpenGL gearbeitet, aber ich wuerde dir einfach mal raten Beispielcode zu kompilieren. Das hiersieht doch ganz nett aus - da ist alles dabei und du kannst z.b. ausschliessen dass es an einer falschen DLL oder aehnlichem liegt.
"Have you tried turning it off and on again?"

the[V]oid

Alter Hase

Beiträge: 775

Wohnort: Aachen

  • Private Nachricht senden

6

24.05.2009, 02:07

1. Was sind SigFaults? Ich kenn nur SegFaults... sicher, dass du kein SegFault meinst? Falls doch...
2. Was genau macht der Befehl in der ersten Zeile von init(), wo du den Fehler kriegst? Falls es nichts kritisches ist...
3. Es sieht wohl so aus, als würdest du den Stack kaputt machen.

In jedem Fall würde ich an deiner Stelle mal genau überprüfen, ob du nicht irgendwo etwas Dummes mit Zeigern machst, wie etwa einen Buffer-Overrun.
<< an dieser Stelle ist eine Signatur verstorben >>

Werbeanzeige