Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

OpenGL3.x macht probleme

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Bibliotheken
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
XOR



Anmeldungsdatum: 23.07.2010
Beiträge: 161

BeitragVerfasst am: 21.07.2011, 19:26    Titel: OpenGL3.x macht probleme Antworten mit Zitat

Letztlich habe ich angefangen OpenGL3 zu benutzen, leider bekomme ich das nicht richtig hin.
Ich weiss das ich sachen nur ueber VBO's rendern kann und shader brauche, was aber eigentlich kein Problem darstellt, leider tritt bei volgendem code
Code:
Sub VBO.Render ( )
   VBOManager.glBindVertexArray(This.vbo->vao)
   VBOManager.glBindBuffer(GL_ARRAY_BUFFER, This.vbo->vbo)
   VBOManager.glDrawArrays(This.vbo->DrawTyp,0,This.vbo->vertexes)
   VBOManager.glBindVertexArray(0)
End Sub

bei VBOManager.glDrawArrays(This.vbo->DrawTyp,0,This.vbo->vertexes)
ein GL_INVALID_ENUM error auf. In OpenGL2 bekomme ich keinen fehler.
Kann mir da vieleicht jemand helfen?

So instaliere ich OpenGL3.x
Code:
Function InitGL ( ByVal MajorVersion As Long, ByVal MinorVersion As Long ) As Long
   
   #Ifdef __FB_WIN32__
   
   #Define WGL_CONTEXT_MAJOR_VERSION_ARB &H2091
   #Define WGL_CONTEXT_MINOR_VERSION_ARB &H2092
   #Define WGL_CONTEXT_FLAGS_ARB &H2094
   #Define WGL_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB &H0002
   
   Type PFNWGLCREATECONTEXTATTRIBSARBPROC As Function (ByVal hDC As HDC, ByVal hShareContext As HGLRC, ByVal attribList As Integer Ptr) As HGLRC
   
   Dim GLRC As HGLRC
   Dim GLHRC As HGLRC
   Dim GLDC As HDC
   Dim wglCreateContextAttribsARB As PFNWGLCREATECONTEXTATTRIBSARBPROC
   Dim attribs(...) As Integer => { WGL_CONTEXT_MAJOR_VERSION_ARB, MajorVersion, WGL_CONTEXT_MINOR_VERSION_ARB, MinorVersion, WGL_CONTEXT_FLAGS_ARB, WGL_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB, 0 }

   GLRC = wglGetCurrentContext ( )
   GLDC = wglGetCurrentDC ( )
   
   If GLRC = 0 Then
      ErrorLog ( "No OpenGL context created" )
      Return 0
   EndIf
   
   wglCreateContextAttribsARB = Cast(PFNWGLCREATECONTEXTATTRIBSARBPROC, wglGetProcAddress("wglCreateContextAttribsARB"))
   
   If wglCreateContextAttribsARB = 0 Then
      ErrorLog ( "There is no OpenGL"+Str(MajorVersion)+" context support" )
      Return 0
   EndIf
   
   GLHRC = wglCreateContextAttribsARB ( GLDC, 0, @attribs(0) )
   
   If GLHRC = 0 Then
      ErrorLog ( "Couldn't create OpenGL"+Str(MajorVersion)+"."+Str(MinorVersion)+" context" )
      Return 0
   EndIf
   
   wglMakeCurrent(GLDC,GLHRC)
    wglDeleteContext(GLRC)
   If wglGetCurrentContext ( ) <> GLHRC Then
      ErrorLog ( "Couldn't create OpenGL"+Str(MajorVersion)+"."+Str(MinorVersion)+" context" )
      Return 0
   EndIf
   
   #ElseIf Defined(__FB_LINUX__)
   
   #Define GLX_CONTEXT_MAJOR_VERSION_ARB &H2091
   #Define GLX_CONTEXT_MINOR_VERSION_ARB &H2092
   #Define GLX_CONTEXT_FLAGS_ARB &H2094
   #Define GLX_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB &H0002
   
   Type GLXCREATECONTEXTATTRIBSARBPROC As Function ( ByVal dpy As Display Ptr, ByVal config As GLXFBConfig, ByVal share_context As GLXContex, ByVal direct As Bool, ByVal attrib_list As Integer Ptr) As GLXContext
   
   Dim GLRC As GLXContext
   Dim GLHRC As GLXContext
   Dim GLDC As Display Ptr
   Dim glXCreateContextAttribsARB As GLXCREATECONTEXTATTRIBSARBPROC
   Dim attribs(...) As Integer => { GLX_CONTEXT_MAJOR_VERSION_ARB, MajorVersion, GLX_CONTEXT_MINOR_VERSION_ARB, MinorVersion, GLX_CONTEXT_FLAGS_ARB, GLX_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB, 0 }
   
   GLRC = glXGetCurrentContext ( )
   GLDC = glXGetCurrentDisplay ( )
   
   If GLRC = 0 Then
      ErrorLog ( "No OpenGL context created" )
      Return 0
   EndIf
   
   glXCreateContextAttribsARB = Cast(GLXCREATECONTEXTATTRIBSARBPROC, glXGetProcAddress("glXCreateContextAttribsARB"))
   
   If wglCreateContextAttribsARB = 0 Then
      ErrorLog ( "There is no OpenGL"+Str(MajorVersion)+" context support" )
      Return 0
   EndIf
   
   GLHRC = glCCreateContextAttribsARB ( GLDC, 0, 0, 1,@attribs(0) )
   
   If GLHRC = 0 Then
      ErrorLog ( "Couldn't create OpenGL"+Str(MajorVersion)+"."+Str(MinorVersion)+" context" )
      Return 0
   EndIf
   
   glXMakeCurrent(GLDC,GLHRC)
    glXDeleteContext(GLRC)
   
   #EndIf
   
   VBOManager.Init()
   SHADERManager.Init()
   
   Return -1
   
End Function
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
28398



Anmeldungsdatum: 25.04.2008
Beiträge: 1917

BeitragVerfasst am: 21.07.2011, 23:32    Titel: Antworten mit Zitat

Zitat:
GL_INVALID_ENUM wird generiert, wenn mode einen ungültigen Wert hatte.

Tjoa ich würde mal schauen, ob dein DrawType von GL3 noch unterstützt wird...

Ansonsten mal hier schauen, 0,25 Sek. Google: http://stackoverflow.com/questions/6414094/drawing-vbo-with-gldrawarrays-works-in-opengl-2-1-but-not-in-opengl-3-x
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
XOR



Anmeldungsdatum: 23.07.2010
Beiträge: 161

BeitragVerfasst am: 22.07.2011, 08:12    Titel: Antworten mit Zitat

Vielen Dank.
Ich hatte nicht gewusst, das GL_QUADS in OpenGL3 nicht mehr unterstuetzt werden. Mit GL_TRIANGLE_FAN gehts super.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
28398



Anmeldungsdatum: 25.04.2008
Beiträge: 1917

BeitragVerfasst am: 22.07.2011, 15:40    Titel: Antworten mit Zitat

zwinkern
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 22.07.2011, 16:14    Titel: Antworten mit Zitat

Nimm lieber nen triangle strip statt triangle fan, wenn möglich.
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
XOR



Anmeldungsdatum: 23.07.2010
Beiträge: 161

BeitragVerfasst am: 23.07.2011, 15:27    Titel: Antworten mit Zitat

Zitat:
Nimm lieber nen triangle strip statt triangle fan, wenn möglich.

Werde ich warscheinlich machen! Das war einfach die erste wahl gewesen um GL_QUADS zu ersetzen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Bibliotheken Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz