Commit f2c40726 authored by Sam Lantinga's avatar Sam Lantinga

Added an OpenGL ES 2.0 renderer, contributed by itsnotabigtruck

This compiles, but it untested.
parent a51c332d
......@@ -62,6 +62,9 @@
0098A5631195B4D900343137 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0098A5621195B4D900343137 /* OpenGLES.framework */; };
0098A5651195B4D900343137 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0098A5641195B4D900343137 /* UIKit.framework */; };
0098A5851195B5E200343137 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0098A5841195B5E200343137 /* QuartzCore.framework */; };
0402A85812FE70C600CECEE3 /* SDL_render_gles2.c in Sources */ = {isa = PBXBuildFile; fileRef = 0402A85512FE70C600CECEE3 /* SDL_render_gles2.c */; };
0402A85912FE70C600CECEE3 /* SDL_shaders_gles2.c in Sources */ = {isa = PBXBuildFile; fileRef = 0402A85612FE70C600CECEE3 /* SDL_shaders_gles2.c */; };
0402A85A12FE70C600CECEE3 /* SDL_shaders_gles2.h in Headers */ = {isa = PBXBuildFile; fileRef = 0402A85712FE70C600CECEE3 /* SDL_shaders_gles2.h */; };
041B2CD912FA0E9E0087D585 /* SDL_render.h in Headers */ = {isa = PBXBuildFile; fileRef = 041B2CD812FA0E9E0087D585 /* SDL_render.h */; settings = {ATTRIBUTES = (Public, ); }; };
041B2CF112FA0F680087D585 /* SDL_render.c in Sources */ = {isa = PBXBuildFile; fileRef = 041B2CEA12FA0F680087D585 /* SDL_render.c */; };
041B2CF212FA0F680087D585 /* SDL_sysrender.h in Headers */ = {isa = PBXBuildFile; fileRef = 041B2CEB12FA0F680087D585 /* SDL_sysrender.h */; };
......@@ -324,6 +327,9 @@
0098A5621195B4D900343137 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; };
0098A5641195B4D900343137 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
0098A5841195B5E200343137 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; };
0402A85512FE70C600CECEE3 /* SDL_render_gles2.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_render_gles2.c; sourceTree = "<group>"; };
0402A85612FE70C600CECEE3 /* SDL_shaders_gles2.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_shaders_gles2.c; sourceTree = "<group>"; };
0402A85712FE70C600CECEE3 /* SDL_shaders_gles2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_shaders_gles2.h; sourceTree = "<group>"; };
041B2CD812FA0E9E0087D585 /* SDL_render.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDL_render.h; path = ../../include/SDL_render.h; sourceTree = SOURCE_ROOT; };
041B2CEA12FA0F680087D585 /* SDL_render.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_render.c; sourceTree = "<group>"; };
041B2CEB12FA0F680087D585 /* SDL_sysrender.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_sysrender.h; sourceTree = "<group>"; };
......@@ -669,10 +675,21 @@
path = cocoa;
sourceTree = "<group>";
};
0402A85412FE70C600CECEE3 /* opengles2 */ = {
isa = PBXGroup;
children = (
0402A85512FE70C600CECEE3 /* SDL_render_gles2.c */,
0402A85612FE70C600CECEE3 /* SDL_shaders_gles2.c */,
0402A85712FE70C600CECEE3 /* SDL_shaders_gles2.h */,
);
path = opengles2;
sourceTree = "<group>";
};
041B2CE312FA0F680087D585 /* render */ = {
isa = PBXGroup;
children = (
041B2CE812FA0F680087D585 /* opengles */,
0402A85412FE70C600CECEE3 /* opengles2 */,
041B2CEC12FA0F680087D585 /* software */,
04409BA212FA989600FB9AA8 /* mmx.h */,
041B2CEA12FA0F680087D585 /* SDL_render.c */,
......@@ -1249,6 +1266,7 @@
04F7808412FB753F00FC43C0 /* SDL_nullframebuffer_c.h in Headers */,
0442EC4B12FE1BFF004C9285 /* SDL_hints.h in Headers */,
0442EC5012FE1C1E004C9285 /* SDL_render_sw_c.h in Headers */,
0402A85A12FE70C600CECEE3 /* SDL_shaders_gles2.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
......@@ -1497,6 +1515,8 @@
0442EC5112FE1C1E004C9285 /* SDL_render_sw.c in Sources */,
0442EC5312FE1C28004C9285 /* SDL_render_gles.c in Sources */,
0442EC5512FE1C3F004C9285 /* SDL_hints.c in Sources */,
0402A85812FE70C600CECEE3 /* SDL_render_gles2.c in Sources */,
0402A85912FE70C600CECEE3 /* SDL_shaders_gles2.c in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
......
......@@ -145,6 +145,7 @@ typedef unsigned long uintptr_t;
/* enable OpenGL ES */
#define SDL_VIDEO_OPENGL_ES 1
#define SDL_VIDEO_RENDER_OGL_ES 1
#define SDL_VIDEO_RENDER_OGL_ES2 1
/* Enable system power support */
#define SDL_POWER_UIKIT 1
......
......@@ -51,7 +51,10 @@ static const SDL_RenderDriver *render_drivers[] = {
&GL_RenderDriver,
#endif
#if SDL_VIDEO_RENDER_OGL_ES
&GL_ES_RenderDriver,
&GLES_RenderDriver,
#endif
#if SDL_VIDEO_RENDER_OGL_ES2
&GLES2_RenderDriver,
#endif
#if SDL_VIDEO_RENDER_DIRECTFB
&DirectFB_RenderDriver,
......
......@@ -125,7 +125,10 @@ extern SDL_RenderDriver D3D_RenderDriver;
extern SDL_RenderDriver GL_RenderDriver;
#endif
#if SDL_VIDEO_RENDER_OGL_ES
extern SDL_RenderDriver GL_ES_RenderDriver;
extern SDL_RenderDriver GLES_RenderDriver;
#endif
#if SDL_VIDEO_RENDER_OGL_ES2
extern SDL_RenderDriver GLES2_RenderDriver;
#endif
#if SDL_VIDEO_RENDER_DIRECTFB
extern SDL_RenderDriver DirectFB_RenderDriver;
......
......@@ -71,7 +71,7 @@ static void GLES_DestroyTexture(SDL_Renderer * renderer,
static void GLES_DestroyRenderer(SDL_Renderer * renderer);
SDL_RenderDriver GL_ES_RenderDriver = {
SDL_RenderDriver GLES_RenderDriver = {
GLES_CreateRenderer,
{
"opengl_es",
......@@ -201,7 +201,7 @@ GLES_CreateRenderer(SDL_Window * window, Uint32 flags)
renderer->RenderPresent = GLES_RenderPresent;
renderer->DestroyTexture = GLES_DestroyTexture;
renderer->DestroyRenderer = GLES_DestroyRenderer;
renderer->info = GL_ES_RenderDriver.info;
renderer->info = GLES_RenderDriver.info;
renderer->driverdata = data;
renderer->info.flags = SDL_RENDERER_ACCELERATED;
......@@ -265,7 +265,6 @@ static SDL_GLContext SDL_CurrentContext = NULL;
static int
GLES_ActivateRenderer(SDL_Renderer * renderer)
{
GLES_RenderData *data = (GLES_RenderData *) renderer->driverdata;
SDL_Window *window = renderer->window;
......@@ -390,13 +389,6 @@ GLES_CreateTexture(SDL_Renderer * renderer, SDL_Texture * texture)
return 0;
}
static void
SetupTextureUpdate(GLES_RenderData * renderdata, SDL_Texture * texture,
int pitch)
{
renderdata->glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
}
static int
GLES_UpdateTexture(SDL_Renderer * renderer, SDL_Texture * texture,
const SDL_Rect * rect, const void *pixels, int pitch)
......@@ -412,7 +404,7 @@ GLES_UpdateTexture(SDL_Renderer * renderer, SDL_Texture * texture,
GLES_ActivateRenderer(renderer);
renderdata->glGetError();
SetupTextureUpdate(renderdata, texture, pitch);
renderdata->glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
renderdata->glEnable(data->type);
renderdata->glBindTexture(data->type, data->texture);
......@@ -467,7 +459,7 @@ GLES_UnlockTexture(SDL_Renderer * renderer, SDL_Texture * texture)
GLES_ActivateRenderer(renderer);
SetupTextureUpdate(renderdata, texture, data->pitch);
renderdata->glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
renderdata->glEnable(data->type);
renderdata->glBindTexture(data->type, data->texture);
renderdata->glTexSubImage2D(data->type, 0, 0, 0, texture->w,
......
This diff is collapsed.
This diff is collapsed.
/*
SDL - Simple DirectMedia Layer
Copyright (C) 2010 itsnotabigtruck.
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.
*/
#include "SDL_config.h"
#if SDL_VIDEO_RENDER_OGL_ES2
#ifndef SDL_shaderdata_h_
#define SDL_shaderdata_h_
#ifdef __IPHONEOS__
#include <OpenGLES/ES2/gl.h>
#else
#include <GLES2/gl2.h>
#endif
typedef struct GLES2_ShaderInstance
{
GLenum type;
GLenum format;
int length;
const void *data;
} GLES2_ShaderInstance;
typedef struct GLES2_Shader
{
int instance_count;
const GLES2_ShaderInstance *instances[4];
} GLES2_Shader;
typedef enum
{
GLES2_SHADER_VERTEX_DEFAULT,
GLES2_SHADER_FRAGMENT_SOLID_SRC,
GLES2_SHADER_FRAGMENT_TEXTURE_SRC
} GLES2_ShaderType;
#define GLES2_SOURCE_SHADER (GLenum)-1
const GLES2_Shader *GLES2_GetShader(GLES2_ShaderType type, SDL_BlendMode blendMode);
#endif /* SDL_shaderdata_h_ */
#endif /* SDL_VIDEO_RENDER_OGL_ES2 */
/* vi: set ts=4 sw=4 expandtab: */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment