Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(11)

Unified Diff: third_party/gles_book_examples/Chapter_15/Hello_Triangle_KD/Hello_Triangle_KD.c

Issue 543002: Renamed gles_book_examples to gles2_book to make it shorter and more correct.... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 10 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/gles_book_examples/Chapter_15/Hello_Triangle_KD/Hello_Triangle_KD.c
===================================================================
--- third_party/gles_book_examples/Chapter_15/Hello_Triangle_KD/Hello_Triangle_KD.c (revision 35873)
+++ third_party/gles_book_examples/Chapter_15/Hello_Triangle_KD/Hello_Triangle_KD.c (working copy)
@@ -1,306 +0,0 @@
-//
-// Book: OpenGL(R) ES 2.0 Programming Guide
-// Authors: Aaftab Munshi, Dan Ginsburg, Dave Shreiner
-// ISBN-10: 0321502795
-// ISBN-13: 9780321502797
-// Publisher: Addison-Wesley Professional
-// URLs: http://safari.informit.com/9780321563835
-// http://www.opengles-book.com
-//
-
-// Hello_Triangle_KD.c
-//
-// This is a simple example that draws a single triangle with
-// a minimal vertex/fragment shader using OpenKODE.
-//
-#include <KD/kd.h>
-#include <EGL/egl.h>
-#include <GLES2/gl2.h>
-
-typedef struct
-{
- // Handle to a program object
- GLuint programObject;
-
- // EGL handles
- EGLDisplay eglDisplay;
- EGLContext eglContext;
- EGLSurface eglSurface;
-
-} UserData;
-
-///
-// Create a shader object, load the shader source, and
-// compile the shader.
-//
-GLuint LoadShader ( GLenum type, const char *shaderSrc )
-{
- GLuint shader;
- GLint compiled;
-
- // Create the shader object
- shader = glCreateShader ( type );
-
- if ( shader == 0 )
- return 0;
-
- // Load the shader source
- glShaderSource ( shader, 1, &shaderSrc, NULL );
-
- // Compile the shader
- glCompileShader ( shader );
-
- // Check the compile status
- glGetShaderiv ( shader, GL_COMPILE_STATUS, &compiled );
-
- if ( !compiled )
- {
- GLint infoLen = 0;
-
- glGetShaderiv ( shader, GL_INFO_LOG_LENGTH, &infoLen );
-
- if ( infoLen > 1 )
- {
- char* infoLog = kdMalloc (sizeof(char) * infoLen );
-
- glGetShaderInfoLog ( shader, infoLen, NULL, infoLog );
- kdLogMessage ( infoLog );
-
- kdFree ( infoLog );
- }
-
- glDeleteShader ( shader );
- return 0;
- }
-
- return shader;
-
-}
-
-///
-// Initialize the shader and program object
-//
-int Init ( UserData *userData )
-{
- GLbyte vShaderStr[] =
- "attribute vec4 vPosition; \n"
- "void main() \n"
- "{ \n"
- " gl_Position = vPosition; \n"
- "} \n";
-
- GLbyte fShaderStr[] =
- "precision mediump float;\n"\
- "void main() \n"
- "{ \n"
- " gl_FragColor = vec4 ( 1.0, 0.0, 0.0, 1.0 );\n"
- "} \n";
-
- GLuint vertexShader;
- GLuint fragmentShader;
- GLuint programObject;
- GLint linked;
-
- // Load the vertex/fragment shaders
- vertexShader = LoadShader ( GL_VERTEX_SHADER, vShaderStr );
- fragmentShader = LoadShader ( GL_FRAGMENT_SHADER, fShaderStr );
-
- // Create the program object
- programObject = glCreateProgram ( );
-
- if ( programObject == 0 )
- return 0;
-
- glAttachShader ( programObject, vertexShader );
- glAttachShader ( programObject, fragmentShader );
-
- // Bind vPosition to attribute 0
- glBindAttribLocation ( programObject, 0, "vPosition" );
-
- // Link the program
- glLinkProgram ( programObject );
-
- // Check the link status
- glGetProgramiv ( programObject, GL_LINK_STATUS, &linked );
-
- if ( !linked )
- {
- GLint infoLen = 0;
-
- glGetProgramiv ( programObject, GL_INFO_LOG_LENGTH, &infoLen );
-
- if ( infoLen > 1 )
- {
- char* infoLog = kdMalloc (sizeof(char) * infoLen );
-
- glGetProgramInfoLog ( programObject, infoLen, NULL, infoLog );
- kdLogMessage ( infoLog );
-
- kdFree ( infoLog );
- }
-
- glDeleteProgram ( programObject );
- return FALSE;
- }
-
- // Store the program object
- userData->programObject = programObject;
-
- glClearColor ( 0.0f, 0.0f, 0.0f, 0.0f );
- return TRUE;
-}
-
-///
-// Draw a triangle using the shader pair created in Init()
-//
-void Draw ( UserData *userData )
-{
- GLfloat vVertices[] = { 0.0f, 0.5f, 0.0f,
- -0.5f, -0.5f, 0.0f,
- 0.5f, -0.5f, 0.0f };
-
- // Set the viewport
- glViewport ( 0, 0, 320, 240 );
-
- // Clear the color buffer
- glClear ( GL_COLOR_BUFFER_BIT );
-
- // Use the program object
- glUseProgram ( userData->programObject );
-
- // Load the vertex data
- glVertexAttribPointer ( 0, 3, GL_FLOAT, GL_FALSE, 0, vVertices );
- glEnableVertexAttribArray ( 0 );
-
- glDrawArrays ( GL_TRIANGLES, 0, 3 );
-
- eglSwapBuffers ( userData->eglDisplay, userData->eglSurface );
-}
-
-
-///
-// InitEGLContext()
-//
-// Initialize an EGL rendering context and all associated elements
-//
-EGLBoolean InitEGLContext ( UserData *userData,
- KDWindow *window,
- EGLConfig config )
-{
- EGLContext context;
- EGLSurface surface;
- EGLint contextAttribs[] = { EGL_CONTEXT_CLIENT_VERSION, 2, EGL_NONE, EGL_NONE };
-
- // Get native window handle
- EGLNativeWindowType hWnd;
- if(kdRealizeWindow(window, &hWnd) != 0)
- {
- return EGL_FALSE;
- }
- surface = eglCreateWindowSurface(userData->eglDisplay, config, hWnd, NULL);
- if ( surface == EGL_NO_SURFACE )
- {
- return EGL_FALSE;
- }
-
- // Create a GL context
- context = eglCreateContext(userData->eglDisplay, config, EGL_NO_CONTEXT, contextAttribs );
- if ( context == EGL_NO_CONTEXT )
- {
- return EGL_FALSE;
- }
-
- // Make the context current
- if ( !eglMakeCurrent(userData->eglDisplay, surface, surface, context) )
- {
- return EGL_FALSE;
- }
-
- userData->eglContext = context;
- userData->eglSurface = surface;
-
- return EGL_TRUE;
-}
-
-///
-// kdMain()
-//
-// Main function for OpenKODE application
-//
-KDint kdMain ( KDint argc, const KDchar *const *argv )
-{
- EGLint attribList[] =
- {
- EGL_RED_SIZE, 8,
- EGL_GREEN_SIZE, 8,
- EGL_BLUE_SIZE, 8,
- EGL_ALPHA_SIZE, EGL_DONT_CARE,
- EGL_DEPTH_SIZE, EGL_DONT_CARE,
- EGL_STENCIL_SIZE, EGL_DONT_CARE,
- EGL_NONE
- };
- EGLint majorVersion,
- minorVersion;
- UserData userData;
- EGLint numConfigs;
- EGLConfig config;
- KDWindow *window = KD_NULL;
-
- userData.eglDisplay = eglGetDisplay( EGL_DEFAULT_DISPLAY );
-
- // Initialize EGL
- if ( !eglInitialize(userData.eglDisplay, &majorVersion, &minorVersion) )
- {
- return EGL_FALSE;
- }
-
- // Get configs
- if ( !eglGetConfigs(userData.eglDisplay, NULL, 0, &numConfigs) )
- {
- return EGL_FALSE;
- }
-
- // Choose config
- if ( !eglChooseConfig(userData.eglDisplay, attribList, &config, 1, &numConfigs) )
- {
- return EGL_FALSE;
- }
-
-
- // Use OpenKODE to create a Window
- window = kdCreateWindow ( userData.eglDisplay, config, KD_NULL );
- if( !window )
- kdExit ( 0 );
-
- if ( !InitEGLContext ( &userData, window, config ) )
- kdExit ( 0 );
-
- if ( !Init ( &userData ) )
- kdExit ( 0 );
-
- // Main Loop
- while ( 1 )
- {
- // Wait for an event
- const KDEvent *evt = kdWaitEvent ( 0 );
- if ( evt )
- {
- // Exit app
- if ( evt->type == KD_EVENT_WINDOW_CLOSE)
- break;
- }
-
- // Draw frame
- Draw ( &userData );
- }
-
- // EGL clean up
- eglMakeCurrent ( 0, 0, 0, 0 );
- eglDestroySurface ( userData.eglDisplay, userData.eglSurface );
- eglDestroyContext ( userData.eglDisplay, userData.eglContext );
-
- // Destroy the window
- kdDestroyWindow(window);
-
- return 0;
-}

Powered by Google App Engine
This is Rietveld 408576698