  | 
					
						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, 18: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, 07: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, 14:40    Titel:  | 
				     | 
			 
			
				
  | 
			 
			
				  | 
			 
		  | 
	 
	
		| Nach oben | 
		 | 
	 
	
		  | 
	 
	
		Jojo alter Rang
  
  Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
  | 
		
			
				 Verfasst am: 22.07.2011, 15: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, 14: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.
  | 
   
 
     |