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

ToxiCore

Treue Seele

  • »ToxiCore« ist der Autor dieses Themas

Beiträge: 131

Beruf: Student

  • Private Nachricht senden

1

15.07.2005, 20:43

GLUT Initialisierung

Hi,
ich habe ein problem mit der Funktion glutInit(). Die Funktion erwartet als Parameter argc und argv aus der main()-Funktion.

Hier der Code (OpenGL.dll):

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
void OpenGL::Init()
{
    glutInit(/*Was soll ich hier übergeben*/);
    glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_ALPHA | GLUT_DEPTH);
    
    InitWindow("OpenGL-Window", VideoMode->Width, VideoMode->Height); //Fenster erstellen

    
    if (bWindowed == false)
    {
        //Vollbildmodus

        glutFullScreen(); //In Vollbildmodus wechseln

    }
    
    glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
    glClearDepth(1.0);
    glDepthFunc(GL_LESS);
    glEnable(GL_DEPTH_TEST);
    glShadeModel(GL_SMOOTH);
    
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    
    gluPerspective(45.0f, (GLfloat)VideoMode->Width / (GLfloat)VideoMode->Height, 0.1f, 100.0f);
    
    glMatrixMode(GL_MODELVIEW);
    
    glutMainLoop(); //GLUT-Hauptschleife

}


Das Problem ist, das sich diese Funktion in einer DLL befindet und ich sie über ein Interface aufrufe, aber nicht weiß wie ich die Parameter übergeben soll. Gibt es da vielleicht Standart Parameter (z.b. glutInit(0, NULL)) oder soetwas?Oder sollte ich die Parameter mit über das Interface übergeben?

Etwa so?:

C-/C++-Quelltext

1
2
3
4
5
int main(int argc, char **argv)
{
    //...

    g_pDevice->Init(argc, argv);
}


:huhu:

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

2

16.07.2005, 00:35

Am besten dürfte es per abstrakter interface klasse gehen von der sich alle anderen ableiten um so das aussehen der funktion festzulegen.die funktion dann noch auf allgemeine typen und größe trimmen und viell noch eine möglichkeit einen nachrichtencode mitzuschicken und schon ist sie fertig die von der winapi abgekupferte daten- und nachrichtenübermittelung ;)
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

Osram

Alter Hase

Beiträge: 889

Wohnort: Weissenthurm

Beruf: SW Entwickler

  • Private Nachricht senden

3

16.07.2005, 11:21

Ich glaube kaum, dass DarkHacker die GLUT umschreiben will ;).

Die C++ Doku sagt:

Zitat


argc

An integer that contains the count of arguments that follow in argv. The argc parameter is always greater than or equal to 1.

argv

An array of null-terminated strings representing command-line arguments entered by the user of the program. By convention, argv[0] is the command with which the program is invoked,


Also würde ich 1 und den exe-Namen als String übergeben.
"Games are algorithmic entertainment."

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

4

16.07.2005, 11:40

ups :-D
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

ToxiCore

Treue Seele

  • »ToxiCore« ist der Autor dieses Themas

Beiträge: 131

Beruf: Student

  • Private Nachricht senden

5

16.07.2005, 12:02

Danke Osram,
hat Funktioniert. :roll:

So sieht der Code jetzt aus.

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
void OpenGL::Init()
{
    char *ProgramName;
    int Args = 1;
    ProgramName = (char*)"OGL.exe";
    glutInit(&Args, &Programname);
    glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_ALPHA | GLUT_DEPTH);
   
    InitWindow("OpenGL-Window", VideoMode->Width, VideoMode->Height); //Fenster erstellen

   
    if (bWindowed == false)
    {
        //Vollbildmodus

        glutFullScreen(); //In Vollbildmodus wechseln

    }
   
    glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
    glClearDepth(1.0);
    glDepthFunc(GL_LESS);
    glEnable(GL_DEPTH_TEST);
    glShadeModel(GL_SMOOTH);
   
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
   
    gluPerspective(45.0f, (GLfloat)VideoMode->Width / (GLfloat)VideoMode->Height, 0.1f, 100.0f);
   
    glMatrixMode(GL_MODELVIEW);
   
    glutMainLoop(); //GLUT-Hauptschleife

}


:huhu:

Werbeanzeige