# See the License for the specific language governing permissions and
# limitations under the License.
-# Basic example of OpenGL ES 2.0 usage from the book OpenGL ES 2.0 Programming Guide.
+# Basic example of OpenGL ES 2.0 usage using SDL 2
#
-# Code reference:
+# From the book OpenGL ES 2.0 Programming Guide, see code reference:
# https://code.google.com/p/opengles-book-samples/source/browse/trunk/LinuxX11/Chapter_2/Hello_Triangle/Hello_Triangle.c
module opengles2_hello_triangle
import glesv2
import egl
-import sdl
-import x11
+import sdl2
import realtime
var window_height = 600
#
-## SDL
+## SDL2
#
-var sdl_display = new SDLDisplay(window_width, window_height)
-var sdl_wm_info = new SDLSystemWindowManagerInfo
-var x11_window_handle = sdl_wm_info.x11_window_handle
+assert sdl.initialize((new SDLInitFlags).video) else
+ print sdl.error
+end
-#
-## X11
-#
-var x_display = x_open_default_display
-assert x_display != 0 else print "x11 fail"
+var sdl_window = new SDLWindow("Title".to_cstring, window_width, window_height, (new SDLWindowFlags).opengl)
+assert not sdl_window.address_is_null else print sdl.error
+
+var sdl_wm_info = sdl_window.wm_info
+var native_window = sdl_wm_info.window_handle
+var native_display = sdl_wm_info.display_handle
+assert not native_display.address_is_null else print "Failed to get handle to native display"
#
## EGL
#
-var egl_display = new EGLDisplay(x_display)
+var egl_display = new EGLDisplay(native_display)
assert egl_display.is_valid else print "EGL display is not valid"
egl_display.initialize
var config = configs.first
-var surface = egl_display.create_window_surface(config, x11_window_handle, [0])
+var surface = egl_display.create_window_surface(config, native_window, [0])
assert surface.is_ok else print egl_display.error
var context = egl_display.create_context(config)
egl_display.destroy_surface surface
#
-## SDL
+## SDL2
#
# close
-sdl_display.destroy
+sdl.quit