Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » OpenGL » OpenGl + SDL + VC6 sehr langsame Programmausführung

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
21.05.2008, 11:20 Uhr
WindDancer1



Hallo Leute ,

ich habe einen kleinen Code geschrieben mit OpenGl + SDL + M$VC++ 6.
Es wird eine Textur auf ein Rechteck gelegt welches dann um die Y - Achse gedreht wir.
Unter Linux wird der Source "normal" schnell, also wie erwartet ausgefüht aber unter Windows extrem langsam

Hier mal mein Code:

C++:
#include <windows.h>        // Header File For Windows
#include <stdio.h>
#include <GL\gl.h>
#include <GL\glu.h>
#include <GL\glaux.h>
#include <SDL\SDL.h>

// #ifdef _WIN32
// #undef main
// #endif

GLuint texture[1];

int LoadGLTextures( )
{
  /* Status indicator */
  int Status = 0;

  /* Create storage space for the texture */
  SDL_Surface *TextureImage[1];

  /* Load The Bitmap, Check For Errors, If Bitmap's Not Found Quit */
  if ( ( TextureImage[0] = SDL_LoadBMP( "data/nehe.bmp" ) ) )
    {

      /* Set the status to true */
      Status = 1;

      /* Create The Texture */
      glGenTextures( 1, &texture[0] );

      /* Typical Texture Generation Using Data From The Bitmap */
      glBindTexture( GL_TEXTURE_2D, texture[0] );

      /* Generate The Texture */
      glTexImage2D( GL_TEXTURE_2D, 0, 3, TextureImage[0]->w,
            TextureImage[0]->h, 0, GL_RGB, GL_UNSIGNED_BYTE, TextureImage[0]->pixels );

      /* Linear Filtering */
      glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR );
      glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
    }

  /* Free up any memory we may have used */
  if ( TextureImage[0] )
    SDL_FreeSurface( TextureImage[0] );

  return Status;
}

int main()
{
  float angle=0;
  int i;
  if (SDL_Init (SDL_INIT_VIDEO)!=0)
    {
      printf ("Error: %s\n", SDL_GetError ());
      return 1;
    }
  atexit (SDL_Quit);
  SDL_GL_SetAttribute (SDL_GL_DOUBLEBUFFER, 1);
  SDL_GL_SetAttribute (SDL_GL_RED_SIZE, 5);
  SDL_GL_SetAttribute (SDL_GL_GREEN_SIZE, 6);
  SDL_GL_SetAttribute (SDL_GL_BLUE_SIZE, 5);
  if (SDL_SetVideoMode (640, 480, 16, SDL_OPENGL)==NULL)
    {
      printf ("Error: %s\n", SDL_GetError ());
      return 1;
    }
  SDL_WM_SetCaption ("OpenGL with SDL!", "OpenGL");
  glViewport (80, 0, 480, 480);
  glMatrixMode (GL_PROJECTION);
  glLoadIdentity ();
  glFrustum (-1.0, 1.0, -1.0, 1.0, 1.0, 100.0);
  glClearColor (0, 0, 0, 0);
  glMatrixMode (GL_MODELVIEW);

  LoadGLTextures ();
  glEnable (GL_TEXTURE_2D);
  /*  glShadeModel (GL_SMOOTH); */

for (i=0;i<360*10*3;i++)
  {
    angle=(i/10)%360;
    glLoadIdentity ();
    glClear (GL_COLOR_BUFFER_BIT);
    glTranslatef (0, 0, -2);
    glRotatef (angle, 0, 1, 0);
    glBegin (GL_QUADS);

   // glColor3f (1, 0, 0);
    glTexCoord2f (0, 0); glVertex3f (-1, -1, 0);
   // glColor3f (0, 1, 0);
    glTexCoord2f (1, 0); glVertex3f (1, -1, 0);
   // glColor3f (1, 1, 0);
    glTexCoord2f (1, 1); glVertex3f (1, 1, 0);
   // glColor3f (0, 0, 1);
    glTexCoord2f (0, 1); glVertex3f (-1, 1, 0);

    glEnd ();
    SDL_GL_SwapBuffers ();
  }
  glFlush ();
  SDL_Delay (1000);
  return 0;
}



...ich steh set Tagen vor einem Rätsel

Könnt Ihr mir weiterhelfen???
Vielen Dank für eure Mühe vorab

WindDancer
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
21.05.2008, 12:09 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


mach mal noch SDL_HWSURFACE und SDL_DOUBLEBUF dazu, sonst nimmt er unter windows das softwarerendering bei default
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
21.05.2008, 13:06 Uhr
WindDancer1



Hi Flo,

danke für Deine schnelle Antwort, ich hab das so implementiert:

C++:
  SDL_GL_SetAttribute (SDL_GL_DOUBLEBUFFER, 1);
  SDL_GL_SetAttribute (SDL_GL_RED_SIZE, 5);
  SDL_GL_SetAttribute (SDL_GL_GREEN_SIZE, 6);
  SDL_GL_SetAttribute (SDL_GL_BLUE_SIZE, 5);
  SDL_GL_SetAttribute (SDL_HWSURFACE,5);
  SDL_GL_SetAttribute (SDL_DOUBLEBUF,5);



hat sich aber leider nichts geändert

Da meine OpenGl und SDL Skills aber noch nicht so gut sind weis ich nicht ob ich's richtig gemacht hab


Gruß
Winddanker
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
21.05.2008, 14:38 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


ne nich so, hier:


C++:
if (SDL_SetVideoMode (640, 480, 16, SDL_OPENGL|SDL_HWSURFACE|SDL_DOUBLEBUF)==NULL)


--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
21.05.2008, 16:36 Uhr
WindDancer1



Danke Flo ,

aber leider funzt es immer noch nicht bzw. kriecehnd.
Ich dreh noch am Rad
Ich versteh echt nicht was da falsch ist.
Wärs zuviel verlangt wenn ich Dich bitten würde das ganze mal ein bischen genauer unter die Lupe zu nehmen? Wäre super wenn Du den Fehler finden würdest.

Es ist wie verhext

Vielen Dank für Deine Mühe & Hilfe vorab

WindDancer
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
21.05.2008, 17:14 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


also bei mir funzt der code problemlos, buggy videotreiber utner windows? wo die 3d beschleunigung nicht gescheit funktioniert? oder hast du vista? da is ja mit opengl und so nich so spitzenmäßig von der performance wenn aero aktiv ist
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
22.05.2008, 11:33 Uhr
WindDancer1



Hi Flo,

ich hab XP, grad den neuen nVidia Treiber installiert, funzt immer noch nicht
MeinSystem : CPU: 64 XP, Graka: nVidia 68000 Ultra.
Und bei Dir dreht sich die Bitmap in flüssigem Tempo und den richtigen Farben ohne zu ruckeln?
Was hast Du für Einstellungen bei Deinem Systen irgendwelche Kompatibilitätsmodi oder so?
SDL hab ich direkt von der Homepage und dann einfach in C..... kopiert, OpenGL war schon da!
Brauch ich für OpenGl auch neue Files oder so?


Danke für Deine Hilfe
Winddancer
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
25.05.2008, 11:07 Uhr
WindDancer1



Hi Flo,

habs gefunden, war ein simpler Codingfehler.
Ich bin über 10.000 Mal in diese Schleife gesprungen:

C++:
for (i=0;i<360;i++)
  {
    glLoadIdentity ();

    glClear (GL_COLOR_BUFFER_BIT);
    glTranslatef (0, 0, -2);
    glRotatef (i, 0, 1, 0);



und hab das Rotieren mit einem sehr kleinen Floatwert durchgeführt.
Kein Wunder dass es nicht richtig lief!

Mit dem obigen Code klappts problemlos!

Sag mal kennst Du / Ihr Tuts, Worshops und Bücher die sich speziell mit dem Thema >>> OpenGl + SDL << also dem Zusammenspiel der beiden befassen?


Gruß
Winddancer
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
26.05.2008, 02:25 Uhr
Hans
Library Walker
(Operator)


Hi,

Zitat von WindDancer1:
Sag mal kennst Du / Ihr Tuts, Worshops und Bücher die sich speziell mit dem Thema >>> OpenGl + SDL << also dem Zusammenspiel der beiden befassen?

das nicht, aber das Buch unten befasst sich auf den ersten 100 Seiten mit dem WinAPI, bevor es auf OpenGL eingeht. Eine weitere Aussage darin ist die, das man auf GLUT verzichten kann, wenn man das WinAPI beherscht.

(Amazon link)

Ein Blick in den Wikipediaartikel zu SDL lieferte ausserdem noch dieses Werk:

(Amazon link)

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
27.05.2008, 10:17 Uhr
WindDancer1



Hi & danke Hans

Gruß
Winddancer
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ OpenGL ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: