okay, davon gehe ich aus^^
Bitte nochmal folgendes Script testen und die Consolenausgabe posten, dort werden eure OpenGL-Versionen ermittelt und die für GL erforderlichen Extensions abgefragt.
Spoiler anzeigen
#region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_usex64=n
#endregion ;**** Directives created by AutoIt3Wrapper_GUI ****
#region ;**** Directives created by AutoIt3Wrapper_GUI ****
#endregion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include "..\Includes\opengl.au3"
#include <opencl_easy.au3>
#include <GUIConstantsEx.au3>
#include <WinAPI.au3>
;#include <GDIConstants.au3>
#include <Misc.au3>
;#include <CLGL_easy.au3>
#include<array.au3>
global $DIB_RGB_COLORS = 0
Global $glew_hDLL = DllOpen("glew32.dll")
Global Const $GL_ARRAY_BUFFER = 0x8892 ;gehört in include
Global Const $GL_DYNAMIC_DRAW = 0x88E8 ;gehört in include
Global Const $GL_BGRA = 0x80E1
;INFOS!!!
;erst textur in openGL erstellen und binden, dann erst CL-context erstellen
;programmspezifisch...
$CL_DEBUGFLAG = 1 ;1 debug aus
Global $width = 256 * 3 ;breite und höhe des Fensters
Global $height = 256 * 3
Global $bufferdatasize=$width*$height*4
[/autoit] [autoit][/autoit] [autoit]Global $textur_width = $width, $textur_height = $height ;texturmaße = Fenstermaße
Global $Textur1
;GL_VENDOR, GL_RENDERER, GL_VERSION, or GL_SHADING_LANGUAGE_VERSION.
[/autoit] [autoit][/autoit] [autoit];OpenGL und extensions initialisieren
glInit()
;gluInit()
glfwInit()
$a=glewinit()
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $a = ' & $a & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
;Fenster einrichten
glfwOpenWindowHint($GLFW_WINDOW_NO_RESIZE, 1) ; Resize nicht möglich
glfwOpenWindow($width, $height, 8, 8, 8, 0, 8, 0, $GLFW_WINDOW) ; Fenster öffnen
glfwSetWindowTitle("tunnelflug ") ; Titel setzen
glMatrixMode($GL_PROJECTION) ; Projektionseinstellungen
;gluPerspective(14, $width / $height, 5, 40) ; Perspektive
glOrtho(0, $width, 0, $height, 0, 128)
glViewport(0, 0, $width, $height) ; Viewport
glMatrixMode($GL_MODELVIEW) ; Betrachtungsmodus
;GL-context holen
$gl_context = wglGetCurrentContext()
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $gl_context = ' & $gl_context & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console
;GL-DC vom Fenster holen
$gl_hdc = wglGetCurrentDC()
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $gl_hdc = ' & $gl_hdc & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console
;jetzt erst glew initialisieren!
$init = glewinit()
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $init = ' & $init & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $ret = ' & glewGetErrorString($init) & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console
;Context an aktuellen DC binden
$err = wglMakeCurrent($gl_hdc, $gl_context)
If $err = 0 Then
MsgBox(0, " wglMakeCurrent", "Error!")
Exit
EndIf
;GLCL context erstellen und an hdc (window) binden
;setGLCLcontext() ;aktuellen gl-context an dc (window) binden
GLOBAL $GL_SHADING_LANGUAGE_VERSION=0x8B8C
[/autoit] [autoit][/autoit] [autoit]$vendor=glGetString($GL_VENDOR)
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $vendor = ' & $vendor & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
$renderer=glGetString($GL_RENDERER)
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $renderer = ' & $renderer & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
$version=glGetString($GL_VERSION)
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $version = ' & $version & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
$version=glGetString($GL_SHADING_LANGUAGE_VERSION)
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $version = ' & $version & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
$extensions=glGetString($GL_EXTENSIONS)
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $extensions = ' & $extensions & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
$a=glewinit()
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $a = ' & $a & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
;GL-Version überprüfen
$erg = _glewIsSupported("GL_VERSION_2_0")
$erg1 = _glewIsSupported("GL_ARB_pixel_buffer_object")
If $erg = False Or $erg1 = False Then
MsgBox(0, "GLEW", "GL_VERSION_2_0 or GL_ARB_pixel_buffer_object is not supported!")
Exit
EndIf
;Buffer erstellen....
$textur_obj_struct = _DllStructCreate16("int[100]")
$textur_obj_ptr = DllStructGetPtr($textur_obj_struct)
;bufferhandle holen
$genbuff = glewGenBuffers(1, $textur_obj_ptr) ;
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $genbuff = ' & $genbuff & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console
$textur_Obj = DllStructGetData($textur_obj_struct, 1, 1)
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $textur_Obj = ' & $textur_Obj & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console
$bind = glBindBuffer($GL_ARRAY_BUFFER, 0) ;
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $bind = ' & $bind & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console
;.....und an den arraybuffer binden
$bind = glBindBuffer($GL_ARRAY_BUFFER, $textur_Obj) ;
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $bind = ' & $bind & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console
;Buffergrösse und pointer festlegen und an arraybuffer binden
$struct = _dllstructcreate16("float[" & $bufferdatasize & "]") ;width * height * 4
$textur_ptrbuffer = DllStructGetPtr($struct)
$a = glewBufferData($GL_ARRAY_BUFFER, $bufferdatasize, 0, $GL_DYNAMIC_DRAW);
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $a = ' & $a & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : glewbufferdata = ' & glewGetErrorString($a) & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console
$a = glewBufferData($GL_ARRAY_BUFFER, $bufferdatasize, $textur_ptrbuffer, $GL_DYNAMIC_DRAW);
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $a = ' & $a & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : glewbufferdata = ' & glewGetErrorString($a) & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console
global const $GL_STATIC_DRAW = 0x88E4
[/autoit] [autoit][/autoit] [autoit]$a = glewBufferData($GL_ARRAY_BUFFER, $bufferdatasize, 0, $GL_STATIC_DRAW);
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $a = ' & $a & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : glewbufferdata = ' & glewGetErrorString($a) & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console
$a = glewBufferData($GL_ARRAY_BUFFER, $bufferdatasize, $textur_ptrbuffer, $GL_STATIC_DRAW);
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $a = ' & $a & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : glewbufferdata = ' & glewGetErrorString($a) & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console
Func glewGetErrorString($nr)
$aCall = DllCall($glew_hDLL, "str", "_glewGetErrorString@4", 'int', $nr)
Return $aCall[0]
EndFunc ;==>glewGetErrorString
Func glewGenBuffers($nr, $ptr) ; by [email='Andy@autoit.de'][/email]
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : get_glew_address("__glewGenBuffers") = ' & get_glew_address("__glewGenBuffers") & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
$aCall = DllCallAddress("int", get_glew_address("__glewGenBuffers"), "int", 1, "uint", $ptr)
Return $aCall[0]
EndFunc ;==>glewGenBuffers
Func glBindBuffer($target, $buffer) ; by [email='Andy@autoit.de'][/email]
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : get_glew_address("__glewBindBuffer") = ' & get_glew_address("__glewBindBuffer") & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
$aCall = DllCallAddress("int", get_glew_address("__glewBindBuffer"), "int", $target, "uint", $buffer)
Return $aCall[0]
EndFunc ;==>glBindBuffer
Func glewBufferData($target, $size, $data, $usage) ; by [email='Andy@autoit.de'][/email]
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : get_glew_address("__glewBufferData") = ' & get_glew_address("__glewBufferData") & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
$aCall = DllCallAddress("int", get_glew_address("__glewBufferData"), "uint", $target, "uint", $size, "ptr", $data, "uint", $usage)
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $aCall = ' & $aCall & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
Return $aCall[0]
EndFunc ;==>glewBufferData
Func glewInit()
[/autoit] [autoit][/autoit] [autoit]Local $ret = DllCall($glew_hDLL, "int", "_glewInit@0")
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $ret = ' & $ret & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
Return $ret[0]
EndFunc ;==>glewInit
Func _glewIsSupported($str)
; ---
Local $ret = DllCall($glew_hDLL, "int", "_glewIsSupported@4", "str", $str)
Return SetError($ret[0] = 0, 0, $ret[0] = 1)
EndFunc ;==>_glewIsSupported
Func get_glew_address($func) ; by [email='Andy@autoit.de'][/email]
$ret = DllCall("kernel32.dll", "ptr", "GetProcAddress", "ptr", _WinAPI_GetModuleHandle("glew32.dll"), "str", $func)
;_arraydisplay($ret)
$struct = DllStructCreate("dword", $ret[0]) ;einsprungadresse, hier steht der pointer zur funktion
Return DllStructGetData($struct, 1, 1)
EndFunc ;==>get_glew_address
Func wglcreatecontext($hwnd)
Local $ret = DllCall($__GL_hDLL, "ptr", "wglCreateContext", "hwnd", $hwnd)
If @error Then Return SetError(@error, @extended, $ret)
; ---
Return $ret[0]
EndFunc ;==>wglcreatecontext
Func wglMakeCurrent($hdc, $hrc)
Local $ret = DllCall($__GL_hDLL, "bool", "wglMakeCurrent", "hwnd", $hdc, "ptr", $hrc)
;_ArrayDisplay($ret)
If @error Then Return SetError(@error, @extended, $ret)
; ---
Return $ret[0]
EndFunc ;==>wglMakeCurrent
Func wglGetCurrentDC()
Local $ret = DllCall($__GL_hDLL, "uint", "wglGetCurrentDC")
If @error Then Return SetError(@error, @extended, $ret)
; ---
Return $ret[0]
EndFunc ;==>wglGetCurrentDC
Func wglGetCurrentContext()
Local $ret = DllCall($__GL_hDLL, "uint", "wglGetCurrentContext")
If @error Then Return SetError(@error, @extended, $ret)
; ---
Return $ret[0]
EndFunc ;==>wglGetCurrentContext