am 45bd9946: am fec5d38b: Merge "option to enable multisampling" into gingerbread

Merge commit '45bd99466ce9962778eacaefff1c0a44bb268f0c'

* commit '45bd99466ce9962778eacaefff1c0a44bb268f0c':
  option to enable multisampling
This commit is contained in:
Mathias Agopian 2010-09-09 14:23:09 -07:00 committed by Android Git Automerger
commit 0b30bf5782

View File

@ -63,7 +63,7 @@ using namespace android;
int gAppAlive = 1;
static const char sAppName[] =
"San Angeles Observation OpenGL ES version example (Linux)";
"San Angeles Observation OpenGL ES version example (Linux)";
static int sWindowWidth = WINDOW_DEFAULT_WIDTH;
static int sWindowHeight = WINDOW_DEFAULT_HEIGHT;
@ -74,22 +74,22 @@ static EGLSurface sEglSurface = EGL_NO_SURFACE;
const char *egl_strerror(unsigned err)
{
switch(err){
case EGL_SUCCESS: return "SUCCESS";
case EGL_NOT_INITIALIZED: return "NOT INITIALIZED";
case EGL_BAD_ACCESS: return "BAD ACCESS";
case EGL_BAD_ALLOC: return "BAD ALLOC";
case EGL_BAD_ATTRIBUTE: return "BAD_ATTRIBUTE";
case EGL_BAD_CONFIG: return "BAD CONFIG";
case EGL_BAD_CONTEXT: return "BAD CONTEXT";
case EGL_BAD_CURRENT_SURFACE: return "BAD CURRENT SURFACE";
case EGL_BAD_DISPLAY: return "BAD DISPLAY";
case EGL_BAD_MATCH: return "BAD MATCH";
case EGL_BAD_NATIVE_PIXMAP: return "BAD NATIVE PIXMAP";
case EGL_BAD_NATIVE_WINDOW: return "BAD NATIVE WINDOW";
case EGL_BAD_PARAMETER: return "BAD PARAMETER";
case EGL_BAD_SURFACE: return "BAD_SURFACE";
// case EGL_CONTEXT_LOST: return "CONTEXT LOST";
default: return "UNKNOWN";
case EGL_SUCCESS: return "SUCCESS";
case EGL_NOT_INITIALIZED: return "NOT INITIALIZED";
case EGL_BAD_ACCESS: return "BAD ACCESS";
case EGL_BAD_ALLOC: return "BAD ALLOC";
case EGL_BAD_ATTRIBUTE: return "BAD_ATTRIBUTE";
case EGL_BAD_CONFIG: return "BAD CONFIG";
case EGL_BAD_CONTEXT: return "BAD CONTEXT";
case EGL_BAD_CURRENT_SURFACE: return "BAD CURRENT SURFACE";
case EGL_BAD_DISPLAY: return "BAD DISPLAY";
case EGL_BAD_MATCH: return "BAD MATCH";
case EGL_BAD_NATIVE_PIXMAP: return "BAD NATIVE PIXMAP";
case EGL_BAD_NATIVE_WINDOW: return "BAD NATIVE WINDOW";
case EGL_BAD_PARAMETER: return "BAD PARAMETER";
case EGL_BAD_SURFACE: return "BAD_SURFACE";
// case EGL_CONTEXT_LOST: return "CONTEXT LOST";
default: return "UNKNOWN";
}
}
@ -118,52 +118,59 @@ static void checkEGLErrors()
fprintf(stderr, "EGL Error: 0x%04x\n", (int)error);
}
static int initGraphics()
static int initGraphics(unsigned samples)
{
EGLint configAttribs[] = {
EGL_DEPTH_SIZE, 16,
EGL_NONE
};
EGLint majorVersion;
EGLint minorVersion;
EGLContext context;
EGLConfig config;
EGLSurface surface;
EGLint w, h;
EGLDisplay dpy;
EGL_DEPTH_SIZE, 16,
EGL_SAMPLE_BUFFERS, samples ? 1 : 0,
EGL_SAMPLES, samples,
EGL_NONE
};
EGLNativeWindowType window = android_createDisplaySurface();
dpy = eglGetDisplay(EGL_DEFAULT_DISPLAY);
eglInitialize(dpy, &majorVersion, &minorVersion);
status_t err = EGLUtils::selectConfigForNativeWindow(
dpy, configAttribs, window, &config);
if (err) {
fprintf(stderr, "couldn't find an EGLConfig matching the screen format\n");
return 0;
}
EGLint majorVersion;
EGLint minorVersion;
EGLContext context;
EGLConfig config;
EGLSurface surface;
EGLint w, h;
EGLDisplay dpy;
surface = eglCreateWindowSurface(dpy, config, window, NULL);
egl_error("eglCreateWindowSurface");
EGLNativeWindowType window = android_createDisplaySurface();
fprintf(stderr,"surface = %p\n", surface);
dpy = eglGetDisplay(EGL_DEFAULT_DISPLAY);
eglInitialize(dpy, &majorVersion, &minorVersion);
context = eglCreateContext(dpy, config, NULL, NULL);
egl_error("eglCreateContext");
fprintf(stderr,"context = %p\n", context);
eglMakeCurrent(dpy, surface, surface, context);
egl_error("eglMakeCurrent");
status_t err = EGLUtils::selectConfigForNativeWindow(
dpy, configAttribs, window, &config);
if (err) {
fprintf(stderr, "couldn't find an EGLConfig matching the screen format\n");
return 0;
}
eglQuerySurface(dpy, surface, EGL_WIDTH, &sWindowWidth);
eglQuerySurface(dpy, surface, EGL_HEIGHT, &sWindowHeight);
surface = eglCreateWindowSurface(dpy, config, window, NULL);
egl_error("eglCreateWindowSurface");
fprintf(stderr,"surface = %p\n", surface);
context = eglCreateContext(dpy, config, NULL, NULL);
egl_error("eglCreateContext");
fprintf(stderr,"context = %p\n", context);
eglMakeCurrent(dpy, surface, surface, context);
egl_error("eglMakeCurrent");
eglQuerySurface(dpy, surface, EGL_WIDTH, &sWindowWidth);
eglQuerySurface(dpy, surface, EGL_HEIGHT, &sWindowHeight);
sEglDisplay = dpy;
sEglSurface = surface;
sEglContext = context;
if (samples == 0) {
// GL_MULTISAMPLE is enabled by default
glDisable(GL_MULTISAMPLE);
}
return EGL_TRUE;
}
@ -179,11 +186,14 @@ static void deinitGraphics()
int main(int argc, char *argv[])
{
// not referenced:
argc = argc;
argv = argv;
unsigned samples = 0;
printf("usage: %s [samples]\n", argv[0]);
if (argc == 2) {
samples = atoi( argv[1] );
printf("Multisample enabled: GL_SAMPLES = %u\n", samples);
}
if (!initGraphics())
if (!initGraphics(samples))
{
fprintf(stderr, "Graphics initialization failed.\n");
return EXIT_FAILURE;
@ -195,7 +205,7 @@ int main(int argc, char *argv[])
int frameCount = 0;
gettimeofday(&timeTemp, NULL);
double totalTime = timeTemp.tv_usec/1000000.0 + timeTemp.tv_sec;
while (gAppAlive)
{
struct timeval timeNow;