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

Aktuelle Zeit: Sa Jun 21, 2025 23:19

Foren-Übersicht » Programmierung » OpenGL
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 9 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: C++ Linux OpenGL Access Violation
BeitragVerfasst: Fr Aug 10, 2012 10:54 
Offline
DGL Member

Registriert: Mi Okt 16, 2002 15:06
Beiträge: 1012
Serv,

ich versuche gerade mein aktuelles C++/OpenGL Projekt unter Linux / Eclipse Juno mit CDT plugin zu kompilieren und zu starten. Kompilieren lässt es sich, allerdings beim starten stürzt es sofort beim ersten aufruf einer nicht OpenGL 1.1 funktion ab.

Libs sind folgende eingebunden:

Code:
  1.  
  2. glfw
  3. GLEW
  4. GL
  5. assimp
  6. freeimage
  7.  


Eclipse erkennt auch, das wohl glCreateProgram() nicht gefunden wurde und markiert mir das als Fehler, lässt aber einen Kompiliersvorgang zu, was schonmal merkwürdig ist.

Code:
  1. Function 'glCreateProgram' could not be resolved


Eingebunden habe ich als Preprocessor-Direktive (-D):
GL_GLEXT_PROTOTYPES

Das eine include tut unter Windows problemlos, aber unter Linux und GCC wohl nicht.

Code:
  1.  
  2. #ifndef GLSL_H_
  3. #define GLSL_H_
  4. #include <GL/glew.h>
  5. class CGLSL {
  6.   ...
  7. }
  8. #endif
  9.  


Als Window-Framework nutze ich glfw, das hab ich testweise auch mal included, das hat aber nix gebracht.

glext.h einbinden hat auch nicht geholfen, allerdings glxext.h - also das GLX EXT schon, was aber zig weitere include Fehler nachgezogen hatte, weil die X includes nicht drin waren.

Logischerweise habe ich nachdem Programm-Start GLFW und Glew Initialisert, daran liegt es nicht, vor allem ist ja kein Linker-Fehler sondern ein include fehler vermutlich.

Leider habe ich nicht die Erfahrung unter Linux, daher weiss ich grad auch nicht, was ich falsch mache.
Googlen hat mich nur auf GL_GLEXT_PROTOTYPES gebracht, was aber nicht geholfen hat.

Danke,
Final


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Fr Aug 10, 2012 14:32 
Offline
DGL Member

Registriert: Mi Okt 16, 2002 15:06
Beiträge: 1012
Habe das ganze in ne neue C++ App gepackt und getestet, gleiches Problem:


Code:
  1. #include <GL/glew.h>
  2. #include <GL/glfw.h>
  3.  
  4. #include <string.h>
  5. #include <iostream>
  6. using namespace std;
  7.  
  8. int main() {
  9.  
  10.     // Initialize GLFW
  11.     if (!glfwInit()) {
  12.         return -1;
  13.     }
  14.  
  15.     // Open an OpenGL window
  16.     if (!glfwOpenWindow(640, 480, 8, 8, 8, 8, 32, 8, GLFW_WINDOW)) {
  17.         glfwTerminate();
  18.         return -1;
  19.     }
  20.  
  21.     // Print out opengl infos
  22.     const char* rendererStr = (const char*)glGetString(GL_RENDERER);
  23.     const char* vendorStr = (const char*)glGetString(GL_VENDOR);
  24.     const char* versionStr = (const char*)glGetString(GL_VERSION);
  25.     cout << "GL:" << endl;
  26.     cout << rendererStr << endl;
  27.     cout << vendorStr << endl;
  28.     cout << versionStr << endl;
  29.     cout << endl;
  30.     cout << "Extensions:" << endl;
  31.     const char* extensionStr = (const char*)glGetString(GL_EXTENSIONS);
  32.     char* p = strtok((char*)extensionStr, " ");
  33.     while (p != NULL) {
  34.         cout << p << endl;
  35.         p = strtok(NULL, " ");
  36.     }
  37.  
  38.     cout << "Create shader program..." << endl; // Letzte zeile die ausgegeben wird
  39.     GLuint shaderProg = glCreateProgram();
  40.     cout << "Create shader program successfully" << endl; // Hierhin kommt er nicht mehr hin
  41.  
  42.     // Close window and terminate GLFW
  43.     glfwTerminate();
  44.  
  45.     return 0;
  46. }
  47.  


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Fr Aug 10, 2012 14:42 
Offline
Compliance Officer
Benutzeravatar

Registriert: So Aug 08, 2010 08:37
Beiträge: 460
Programmiersprache: C / C++ / Lua
Grafikkartentreiber installiert?

edit: welches linux?

_________________
offizieller DGL Compliance Beauftragter
Never run a changing system! (oder so)


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Fr Aug 10, 2012 14:50 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mär 30, 2007 18:35
Beiträge: 331
Zur Info: Wenn ich den Code bei mir ausführe, dann habe ich das gleiche Problem wie du.

Wenn ich aber (auf dem gleichen System) QtOpenGL mit glew benutze, habe ich keinerlei Probleme.


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Sa Aug 11, 2012 06:30 
Offline
DGL Member

Registriert: Mi Okt 16, 2002 15:06
Beiträge: 1012
Linux ist Debian Sqeeze, Gnome 3 mit Xorg default ati treiber (kein ati propiertärer treiber!).
OpenGL 2.1 steht zumindest da, das es die graka kann.
Bin mir aber ziemlich sicher das es ein include fehler ist und einfach nur ein paar includes fehlen :(


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Sa Aug 11, 2012 09:07 
Offline
Compliance Officer
Benutzeravatar

Registriert: So Aug 08, 2010 08:37
Beiträge: 460
Programmiersprache: C / C++ / Lua
1. Versuch einen Treiber zu installieren
2. Guck wo die Funktion eigentlich geladen werden sollte und ob sie es dort wird.

_________________
offizieller DGL Compliance Beauftragter
Never run a changing system! (oder so)


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Sa Aug 11, 2012 09:59 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mär 30, 2007 18:35
Beiträge: 331
Was mir gerade aufgefallen ist: Du musst noch glewInit() aufrufen nachdem du dein Fenster/OpenGL-Context erstellt hast. Im Beispiel also in Zeile 20.

Danach sollte es funktionieren.


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Sa Aug 11, 2012 13:37 
Offline
DGL Member

Registriert: Mi Okt 16, 2002 15:06
Beiträge: 1012
Ja, das glewInit() hab ich in der sample demo tatsächlich vergessen, aber in meinem Framework nicht.

Allerdings auf meinem Heimrechner, läuft das ganze auf ubuntu 12.04 problemlos.
Zumindest lässt es sich kompilieren und starten. Habe noch ein paar Probleme mit den Shadern, die ich hoffentlich noch lösen kann aber ansonsten ok.


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: So Aug 12, 2012 11:14 
Offline
DGL Member

Registriert: Mi Okt 16, 2002 15:06
Beiträge: 1012
K, hat sich erledigt. Problem ist gelöst, ich hatte einige Fehler beseitigt, die für VC++ keine Fehler waren aber für GCC schon.
Nun läufts auch unter Linux, selbst mit Bumblebee :-)


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


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 | 16 Queries | GZIP : On ]