glesv2: use SDL2 for a portable hello triangle example
authorAlexis Laferrière <alexis.laf@xymus.net>
Fri, 24 Feb 2017 15:44:02 +0000 (10:44 -0500)
committerAlexis Laferrière <alexis.laf@xymus.net>
Mon, 27 Feb 2017 19:50:11 +0000 (14:50 -0500)
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

lib/glesv2/examples/opengles2_hello_triangle.nit

index 2e1e91d..da367cf 100644 (file)
 # 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
 
@@ -33,22 +32,24 @@ var window_width = 800
 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
@@ -85,7 +86,7 @@ end
 
 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)
@@ -194,7 +195,7 @@ egl_display.destroy_context context
 egl_display.destroy_surface surface
 
 #
-## SDL
+## SDL2
 #
 # close
-sdl_display.destroy
+sdl.quit