Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Di Jul 08, 2025 03:05

Foren-Übersicht » Programmierung » Einsteiger-Fragen
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 4 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Multitexturing
BeitragVerfasst: Di Jan 30, 2007 08:43 
Offline
DGL Member

Registriert: Fr Jan 26, 2007 20:23
Beiträge: 12
Ich wollte in meinem Programm multitexturing benutzten, doch wen ich das prblem starte, meint windows,d as das programm einem fehler entdeckt hat und beendet werden muss.Compilieren geht einwandfrei.

Code:
  1.  
  2. #include<SDL.h>
  3. #include<SDL_image.h>
  4. #include<SDL_openGL.h>
  5. void(APIENTRY*glActiveTexture)(GLenum)=NULL;
  6. void(APIENTRY*glMultiTexCoord2f)(GLenum,GLfloat,GLfloat)=NULL;
  7.  
  8. GLuint texture[2];
  9. void ResizeGL(int x, int y)
  10. {
  11.     glMatrixMode(GL_PROJECTION);
  12.     glLoadIdentity();
  13.     gluPerspective(45.0,(GLdouble)x/(GLdouble)y,0.5,40.0);
  14.     glMatrixMode(GL_MODELVIEW);
  15. }
  16.  
  17. void UnloadGL()
  18. {
  19.     glDeleteTextures(1,&texture[0]);
  20. }
  21.  
  22. void InitGL()
  23. {
  24.     glActiveTexture=(void(APIENTRY*)(GLenum))SDL_GL_GetProcAddress("glActiveTexture");
  25.     glMultiTexCoord2f=(void(APIENTRY*)(GLenum,GLfloat,GLfloat))SDL_GL_GetProcAddress("glMulitTexCoord2f");
  26.     glMatrixMode(GL_TEXTURE);
  27.     glLoadIdentity();
  28.     glRotatef(180.0,1,0,0);
  29.     glViewport(0,0,640,480);
  30.     glClearColor(0.0,0.0,0.0,0.0);
  31.     glClearDepth(1.0);
  32.     glEnable(GL_DEPTH_FUNC);
  33.     glDepthFunc(GL_LEQUAL);
  34.     glHint(GL_PERSPECTIVE_CORRECTION_HINT,GL_NICEST);
  35.     ResizeGL(640,480);
  36. }
  37.  
  38. void LoadImage(char*filename,int n)
  39. {
  40.     SDL_Surface *image=IMG_Load(filename);
  41.     SDL_Surface *conv=SDL_CreateRGBSurface(SDL_SWSURFACE,image->w,image->h,32,0x000000ff,0x0000ff00,0x00ff0000,0xff000000);
  42.     SDL_BlitSurface(image,0,conv,0);
  43.     glGenTextures(1,&texture[n]);
  44.     glBindTexture(GL_TEXTURE_2D,texture[n]);
  45.     glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR_MIPMAP_LINEAR);
  46.     glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
  47.     glTexParameteri(GL_TEXTURE_2D,GL_GENERATE_MIPMAP,GL_TRUE);
  48.     glTexImage2D(GL_TEXTURE_2D,0,GL_RGBA,conv->w,conv->h,0,GL_RGBA,GL_UNSIGNED_BYTE,conv->pixels);
  49.     SDL_FreeSurface(image);
  50.     SDL_FreeSurface(conv);
  51.  
  52.  
  53.     glActiveTexture(GL_TEXTURE0);
  54.     glTexEnvi(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_MODULATE);
  55.     glEnable(GL_TEXTURE_2D);
  56.     glActiveTexture(GL_TEXTURE1);
  57.     glTexEnvi(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_MODULATE);
  58.     glEnable(GL_TEXTURE_2D);
  59. }
  60.  
  61. void DrawGLScene()
  62. {
  63.     glLoadIdentity();
  64.     glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
  65.     glTranslatef(0,0,-5);
  66.     glActiveTexture(GL_TEXTURE0);
  67.     glBindTexture(GL_TEXTURE_2D,texture[0]);
  68.     glActiveTexture(GL_TEXTURE1);
  69.     glBindTexture(GL_TEXTURE_2D,texture[1]);
  70.     glBegin(GL_QUADS);
  71.         glMultiTexCoord2f(GL_TEXTURE0,1,1);
  72.         glMultiTexCoord2f(GL_TEXTURE1,1,1);
  73.         glVertex3f(1,1,1);
  74.         glMultiTexCoord2f(GL_TEXTURE0,0,1);
  75.         glMultiTexCoord2f(GL_TEXTURE1,0,1);
  76.         glVertex3f(-1,1,1);
  77.         glMultiTexCoord2f(GL_TEXTURE0,0,0);
  78.         glMultiTexCoord2f(GL_TEXTURE1,0,0);
  79.         glVertex3f(-1,-1,1);
  80.         glMultiTexCoord2f(GL_TEXTURE0,1,0);
  81.         glMultiTexCoord2f(GL_TEXTURE1,1,0);
  82.         glVertex3f(1,-1,1);
  83.     glEnd();
  84.     glFlush();
  85.     SDL_GL_SwapBuffers();
  86. }
  87.  
  88. int main(int argc,char**argv)
  89. {
  90.     SDL_Event event;
  91.     if(SDL_Init(SDL_INIT_VIDEO)<0)
  92.     {
  93.         MessageBox(NULL,"Konnte SDL nicht initalisieren.","Fehler",0);
  94.         exit(1);
  95.     }
  96.     const SDL_VideoInfo *videoInfo=SDL_GetVideoInfo();
  97.     if(videoInfo==NULL)
  98.     {
  99.         MessageBox(NULL,"Konnte Grafikkarte nicht abfragen.","Fehler",0);
  100.         SDL_Quit();
  101.         exit(1);
  102.     }
  103.     GLuint videoFlags=SDL_OPENGL | SDL_DOUBLEBUF | SDL_HWPALETTE;
  104.     if(videoInfo->hw_available)
  105.     {
  106.         videoFlags=videoFlags|SDL_HWSURFACE;
  107.     }
  108.     else
  109.     {
  110.         videoFlags=videoFlags|SDL_SWSURFACE;
  111.     }
  112.     if(videoInfo->blit_hw)
  113.     {
  114.         videoFlags=videoFlags|SDL_HWACCEL;
  115.     }
  116.     SDL_GL_SetAttribute(SDL_GL_RED_SIZE,5);
  117.     SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE,5);
  118.     SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE,5);
  119.     SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER,1);
  120.     SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE,16);
  121.     SDL_WM_SetCaption("Blending",NULL);
  122.     videoFlags=videoFlags|SDL_RESIZABLE;
  123.     if(SDL_SetVideoMode(640,480,32,videoFlags)==NULL)
  124.     {
  125.         MessageBox(NULL,"Konnte kein Fenster initalisieren","Fehler",0);
  126.         SDL_Quit();
  127.         exit(1);
  128.     }
  129.     int done=0;
  130.     InitGL();
  131.     LoadImage("gras.bmp",0);
  132.     LoadImage("rock.bmp",1);
  133.     while(!done)
  134.     {
  135.         DrawGLScene();
  136.         while(SDL_PollEvent(&event))
  137.         {
  138.             switch(event.type)
  139.             {
  140.             case SDL_VIDEORESIZE:
  141.                 {
  142.                     if(SDL_SetVideoMode(event.resize.w,event.resize.h,32,videoFlags)==NULL)
  143.                     {
  144.                         MessageBox(NULL,"Fehler beim Verändern der Grösse","Fehler",0);
  145.                         SDL_Quit();
  146.                         exit(1);
  147.                     }
  148.                     ResizeGL(event.resize.w,event.resize.h);
  149.                     break;
  150.                 }
  151.             case SDL_QUIT:
  152.                 {
  153.                     done=1;
  154.                 }
  155.             }
  156.         }
  157.     }
  158.     SDL_Quit();
  159.     return 0;
  160. }
  161.  


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jan 30, 2007 13:37 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Jun 20, 2003 13:59
Beiträge: 134
hi,
ich glaub da fehlen noch ein paar infos
was bringt windows denn für einen fehler?

womit komilierst du das, hast du die möglichkeit es schrittweise auszuführen? wenn ja kannst du ja nachsehen wie weit es kommt.

_________________
ghost-site.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jan 30, 2007 14:21 
Offline
DGL Member

Registriert: Fr Jan 26, 2007 20:23
Beiträge: 12
Der fehler tritt beim öffnen der anwendung auf das ist dieser standart windowsfehler, die anwendung hat einen fehler ausgelöst und muss beendet werden


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jan 30, 2007 23:00 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Wir brauchen die konkrete Fehlermeldung.
Es könnte nämlich (und das ist wahrscheinlich) sein, dass es nix mit Multitexturing zu tun hat. Außerdem. Wenn es immer beim Programmstart passiert, kannst du doch mal den Debugger scharf machen und "schrittweise durchsteppen" (eine echte Denglish-Stilblüte). (Siehe Debugging Tutorial)

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 4 Beiträge ] 
Foren-Übersicht » Programmierung » Einsteiger-Fragen


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 8 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.008s | 14 Queries | GZIP : On ]