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

02.03.2005, 00:34

Einfach nur eine Textur

Hi,

hab nach langer Pause mal wieder angefangen zu coden.

Hab nun folgendes Problem:
Ich möchte einfach nur eine Textur auf ein Viereck bringen, aber es wird nichts angezeigt.

Funktion zum laden:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
int load_texture(const std::string &file_name)
{
    SDL_Surface *bitmap = SDL_LoadBMP(file_name.c_str());
    if(0 == bitmap)
    {
        std::cout << "Fehler beim Laden der Bitmap" << std::endl;
        return 0;
    }
    
    int texture;
    glGenTextures(1, reinterpret_cast<unsigned int *>(&texture));
    glBindTexture(GL_TEXTURE_2D, texture);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
    glTexImage2D(GL_TEXTURE_2D, 0, 3, bitmap->w, bitmap->h, 0, GL_RGB, 
                 GL_UNSIGNED_BYTE, bitmap->pixels);
                 
    SDL_FreeSurface(bitmap);
    
    return texture;
}


und hier sollte die Textur auf das Quardat kommen

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void update_screen(int texture)
{
    glColor3ub(255, 255, 255);
    
    glEnable(GL_TEXTURE_2D);
    
    glBindTexture(GL_TEXTURE_2D, texture);
    
    glBegin(GL_QUADS);
        glTexCoord2d(0.0, 0.0); glVertex2d(0.0, 0.0);
        glTexCoord2d(1.0, 0.0); glVertex2d(1.0, 0.0);
        glTexCoord2d(1.0, 1.0); glVertex2d(1.0, 1.0);
        glTexCoord2d(0.0, 1.0); glVertex2d(0.0, 1.0);
    glEnd();    
        
    SDL_GL_SwapBuffers();
}


update_screen wird bei jedem schleifendurchlauf aufgerufen... warum seh ich nichts?
Ein Gespenst geht um in Europa...

2

02.03.2005, 16:32

Ok vllt war das ein bishcen unzusammenhängend. Hier ist noch die main funktion, aus mehr besteht das Programm nicht:

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
52
int main()
{
    if(-1 == SDL_Init(SDL_INIT_VIDEO))
        std::cout << "Fehler beim Initialisieren von SDL_Video" << std::endl;
          
    if(-1 == SDL_GL_SetAttribute(SDL_GL_RED_SIZE, 5))
        std::cout << "Fehler beim Setzen der Rottiefe" << std::endl;

    if(-1 == SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE, 5))
        std::cout << "Fehler beim Setzen der Grüntiefe" << std::endl;

    if(-1 == SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, 5))
        std::cout << "Fehler beim Setzen der Blautiefe" << std::endl;
        
    if(-1 == SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1))
        std::cout << "Fehler beim Setzen der des Doublebuffers auf 1" << std::endl;
    
    int flags = SDL_OPENGL | SDL_HWSURFACE | SDL_DOUBLEBUF;
    if(0 == SDL_SetVideoMode(800, 600, 16, flags))
        std::cout << "Fehler beim Setzen des Bildschirmmodus" << std::endl;
        
    int texture = load_texture("texture.bmp");
    if(0 == texture)
        std::cout << "Fehler beim Laden der Textur" << std::endl;
        
    glViewport(0, 0, 800, 600);

    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glOrtho(0, 800, 600, 0, -1.0, 1.0);

    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
    
    bool quit = false;      
    while(!quit)
    {
        SDL_Event event;
        while(SDL_PollEvent(&event))
        {
            switch(event.type)
            {
            case SDL_KEYDOWN:
            case SDL_QUIT:
                quit = true;
                break;
            }
        }
        
        update_screen(texture);
    }
}
Ein Gespenst geht um in Europa...

3

03.03.2005, 15:36

Kann da keiner helfen?
Ein Gespenst geht um in Europa...

4

03.03.2005, 17:14

ich weis nich obs in dem forum so viele SDL bzw. OGL coder
gibt....

5

03.03.2005, 21:56

wohl nicht... gibts denn spezielle OpenGL+SDL Foren?
Ein Gespenst geht um in Europa...

Anonymous

unregistriert

6

04.03.2005, 07:43

http://www.c-plusplus.de/forum/viewforum-var-f-is-7.html

Probiere es mal hier.

weigo

Treue Seele

Beiträge: 234

Wohnort: Deutschland

  • Private Nachricht senden

7

04.03.2005, 09:03

www.zfx.info

Hier gibt es auch ein extra Forum für OGL, außerdem jede Menge guter Leute, da wird dir sicher jemand helfen können.

Ich habe noch nichts mit der SDL gemacht.

Lasix

Frischling

Beiträge: 3

Beruf: HiWi

  • Private Nachricht senden

8

04.03.2005, 14:04

@muin gelir:
Versuchs mal mit nem größeren Quadrat . Ich hab die Vermutung, dass dein Quadrat einfach zu klein ist: :wirbel:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void update_screen(int texture)
{
    glColor3ub(255, 255, 255);
   
    glEnable(GL_TEXTURE_2D);
   
    glBindTexture(GL_TEXTURE_2D, texture);
   
    glBegin(GL_QUADS);
        glTexCoord2d(0.0, 0.0);    glVertex2d(0.0, 0.0);
        glTexCoord2d(1.0, 0.0);    glVertex2d(100.0, 0.0);
        glTexCoord2d(1.0, 1.0);    glVertex2d(100.0, 100.0);
        glTexCoord2d(0.0, 1.0);    glVertex2d(0.0, 100.0);
    glEnd();   
       
    SDL_GL_SwapBuffers();
}
Der Student studiert, der Arbeiter arbeitet und der Chef? Der scheffelt!

9

04.03.2005, 16:50

Zitat von »"weigo"«

www.zfx.info

Hier gibt es auch ein extra Forum für OGL, außerdem jede Menge guter Leute, da wird dir sicher jemand helfen können.

Ich habe noch nichts mit der SDL gemacht.


Ich hab mich jetz bei dem Board registriert aber ich kann keine nachrichten schreiben, bzw ich finde den button für eine neues thema nicht. wenn ich ne PM schreiben will kommt ne meldung "bitte prüfen sie ihre rechte". Was ist da los?
Ein Gespenst geht um in Europa...

10

04.03.2005, 20:17

Ok jetzt gehts ka ???
Ein Gespenst geht um in Europa...

Werbeanzeige