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

26.10.2006, 00:23

träges fenster

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// Zeichenfunktion

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

int DrawGLScene(GLvoid)
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glLoadIdentity();
    glBindTexture(GL_TEXTURE_2D, texture[0]);

    glLoadIdentity();
                    
    glBegin(GL_QUADS);
        glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f,-1.0f,-1.0f);
        glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f,-1.0f,-1.0f);
        glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f, 1.0f,-1.0f);
        glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f, 1.0f,-1.0f);
    glEnd();

    return TRUE;
}


In diesem Code passiert etwas seeeehr merkwürdiges. Egal wie groß die Bitmap ist die ich als Textur geladen hab, ehr braucht eeeewig um die Textur zu zeichen. Und ich habe das schon per Debugger geprüft, er hängt immer zwischen dem glEnd(); und dem return true, warum? O_o

2

30.10.2006, 09:36

hallo ihr nerds? :D

is die frage zu dumm oder hab ich grade eine genetische mutation in C++ entdeckt?

FlyingDragon

Frischling

Beiträge: 38

Wohnort: Sachsen

Beruf: Consultant / Software Architekt

  • Private Nachricht senden

3

30.10.2006, 10:03

Was für eine Lib nutzt du? Zeig mal den Aufruf der Funktion. Etwas mehr Infos wären nicht schlecht. Meine Zauberkugel ist gerade zum TÜV, sonst hätte ich dir helfen können. ;) Ne, mal im ernst. Der Quellcodeabschnitt sieht okey aus. Liegt wahrscheinlich an dem Aufruf der Funtkion DrawGLScene().
Achtung! Das Lesen dieses Beitrags kann Ihnen und den Menschen in ihrer Umgebung erheblichen Schaden zufügen.
___________
Mein Leben, Freunde und die Spieleentwicklung

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

4

30.10.2006, 10:25

Ich vermute mal was ganz anderes. Ich gehe mal davon aus, dass es sich um OpenGL handelt.
Bei mir hat ein OpenGL-Spiel neulich den Geist aufgegeben, weil ich den Treiber gewechselt habe. Daraufhin hat die OpenGL Schnittstelle anscheinend den Anker geworfen(er nutzt anscheinend nur noch den REF Treiber). Hast du noch andere OpenGL-Anwendungen? Wenn ja, wie sieht es da aus?
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

5

30.10.2006, 14:08

Zu wenig Infos.
Wie lange ist "ewig"?
Passiert das nur beim ersten Durchlauf der Funktion oder immer?
"Games are algorithmic entertainment."

6

30.10.2006, 15:36

Zitat von »"FlyingDragon"«

Was für eine Lib nutzt du?


OpenGL32.lib GLu32.lib GLaux.lib

Zitat von »"FlyingDragon"«

Liegt wahrscheinlich an dem Aufruf der Funtkion DrawGLScene().

Das was Zeit raubt ist aber wie gesacht der Sprung von glEnd(); zu return true

aber hier der Aufruf:

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
while(!done)
    {
        if(PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
        {
            if(msg.message == WM_QUIT)
            {
                done = true;
            }
            else
            {
                TranslateMessage(&msg);
                DispatchMessage(&msg);
            }
        }
        else
        {
            if((active && !DrawGLScene()) || keys[VK_ESCAPE])
            {
                done = true;
            }
            else
            {
                SwapBuffers(hDC);
                
                if(keys[VK_F1])
                {
                    keys[VK_F1] = false;
                    KillGLWindow();
                    fullscreen = !fullscreen;
                    
                    if(!CreateGLWindow(L"Test", 640, 480, 16, fullscreen))
                    {
                        return 0;
                    }
                }
            }
        }
    }




Zitat von »"Nox"«

Hast du noch andere OpenGL-Anwendungen? Wenn ja, wie sieht es da aus?


also bei den Tutorials von Nehe läufts wie geschmiert. Welchen Treiber soll ich denn nehmen?

Zitat von »"Osram"«

Zu wenig Infos.
Wie lange ist "ewig"?
Passiert das nur beim ersten Durchlauf der Funktion oder immer?


ewig sind etwa 3 Sekunden.

Es passiert immer, d.h. wenn ich das Programm starte sieht man erstmal nur den Rahmen vom Fenster und es sieht aus als wär es abgeschmiert. Dann taucht nach ein paar Sekunden die Textur auf. Wenn ich dann die Fenstergröße ändere oder minimiere und wieder maximiere sieht man wieder nur den Rahmen und die Textur taucht nach ein paar Sekunden auf.

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

7

30.10.2006, 17:12

Was passiert, wenn du keine Textur aufrufst. Wielange braucht dann der glEnd-Aufruf?
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.

8

30.10.2006, 23:42

also wenn ich nur das glTexCoord2f raushaue dauerts genauso lang und er macht mir einen komplett schwarzen bildschirm.

wenn ich allerdings gar keine textur lade gehts reibungslos und der bildschirm ist weiß

komische sache

/edit: ich weiß jetzt woran es liegt! Meine BMPs sind die Ursache. Ich habe mal BMPs von nehe genommen und mit denen gings einwandfrei. Jetzt frage ich mich natürlich, was ich mit meinen BMPs falsch gemacht habe, ich habe nur jpegs genommen und mit Paint im BMP-Format abgespeichert (24Bit glaube ich) also wodurch die langen Ladezeiten?

Werbeanzeige