|
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
XOR
Anmeldungsdatum: 23.07.2010 Beiträge: 161
|
Verfasst am: 21.07.2011, 19:26 Titel: OpenGL3.x macht probleme |
|
|
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 |
|
|
28398
Anmeldungsdatum: 25.04.2008 Beiträge: 1917
|
|
Nach oben |
|
|
XOR
Anmeldungsdatum: 23.07.2010 Beiträge: 161
|
Verfasst am: 22.07.2011, 08:12 Titel: |
|
|
Vielen Dank.
Ich hatte nicht gewusst, das GL_QUADS in OpenGL3 nicht mehr unterstuetzt werden. Mit GL_TRIANGLE_FAN gehts super. |
|
Nach oben |
|
|
28398
Anmeldungsdatum: 25.04.2008 Beiträge: 1917
|
Verfasst am: 22.07.2011, 15:40 Titel: |
|
|
|
|
Nach oben |
|
|
Jojo alter Rang
Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 22.07.2011, 16:14 Titel: |
|
|
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 |
|
|
XOR
Anmeldungsdatum: 23.07.2010 Beiträge: 161
|
Verfasst am: 23.07.2011, 15:27 Titel: |
|
|
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 |
|
|
|
|
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.
|
|