extern bool insideGlBeginEnd;
extern trace::Parser parser;
extern glws::Profile defaultProfile;
-extern glws::Visual *visual;
+extern glws::Visual *visual[glws::PROFILE_MAX];
extern glws::Drawable *drawable;
extern glws::Context *context;
DrawableMap::const_iterator it;
it = drawable_map.find(drawable_id);
if (it == drawable_map.end()) {
- return (drawable_map[drawable_id] = glws::createDrawable(visual));
+ return (drawable_map[drawable_id] = glws::createDrawable(visual[glretrace::defaultProfile]));
}
return it->second;
it = context_map.find(ctx);
if (it == context_map.end()) {
glws::Context *context;
- context_map[ctx] = context = glws::createContext(visual, sharedContext, glretrace::defaultProfile);
+ context_map[ctx] = context = glws::createContext(visual[glretrace::defaultProfile], sharedContext, glretrace::defaultProfile);
if (!sharedContext) {
sharedContext = context;
}
static void retrace_eglCreateWindowSurface(trace::Call &call) {
unsigned long long orig_surface = call.ret->toUIntPtr();
- glws::Drawable *drawable = glws::createDrawable(glretrace::visual);
+ glws::Drawable *drawable = glws::createDrawable(glretrace::visual[glws::PROFILE_COMPAT]);
drawable_map[orig_surface] = drawable;
}
}
- glws::Context *context = glws::createContext(glretrace::visual, share_context, profile);
+ glws::Context *context = glws::createContext(glretrace::visual[glws::PROFILE_COMPAT], share_context, profile);
if (!context) {
const char *name;
switch (profile) {
DrawableMap::const_iterator it;
it = drawable_map.find(drawable_id);
if (it == drawable_map.end()) {
- return (drawable_map[drawable_id] = glws::createDrawable(visual));
+ return (drawable_map[drawable_id] = glws::createDrawable(visual[glretrace::defaultProfile]));
}
return it->second;
ContextMap::const_iterator it;
it = context_map.find(context_ptr);
if (it == context_map.end()) {
- return (context_map[context_ptr] = glws::createContext(visual, NULL, glretrace::defaultProfile));
+ return (context_map[context_ptr] = glws::createContext(visual[glretrace::defaultProfile], NULL, glretrace::defaultProfile));
}
return it->second;
unsigned long long orig_context = call.ret->toUIntPtr();
glws::Context *share_context = getContext(call.arg(2).toUIntPtr());
- glws::Context *context = glws::createContext(glretrace::visual, share_context, glretrace::defaultProfile);
+ glws::Context *context = glws::createContext(glretrace::visual[glretrace::defaultProfile], share_context, glretrace::defaultProfile);
context_map[orig_context] = context;
}
unsigned long long orig_context = call.ret->toUIntPtr();
glws::Context *share_context = getContext(call.arg(2).toUIntPtr());
- glws::Context *context = glws::createContext(glretrace::visual, share_context, glretrace::defaultProfile);
+ glws::Context *context = glws::createContext(glretrace::visual[glretrace::defaultProfile], share_context, glretrace::defaultProfile);
context_map[orig_context] = context;
}
unsigned long long orig_context = call.ret->toUIntPtr();
glws::Context *share_context = getContext(call.arg(3).toUIntPtr());
- glws::Context *context = glws::createContext(glretrace::visual, share_context, glretrace::defaultProfile);
+ glws::Context *context = glws::createContext(glretrace::visual[glretrace::defaultProfile], share_context, glretrace::defaultProfile);
context_map[orig_context] = context;
}
bool insideGlBeginEnd = false;
trace::Parser parser;
glws::Profile defaultProfile = glws::PROFILE_COMPAT;
-glws::Visual *visual = NULL;
+glws::Visual *visual[glws::PROFILE_MAX];
glws::Drawable *drawable = NULL;
glws::Context *context = NULL;
}
glws::init();
- visual = glws::createVisual(double_buffer, defaultProfile);
+ visual[glws::PROFILE_COMPAT] = glws::createVisual(double_buffer, glws::PROFILE_COMPAT);
+ visual[glws::PROFILE_CORE] = glws::createVisual(double_buffer, glws::PROFILE_CORE);
+ visual[glws::PROFILE_ES1] = glws::createVisual(double_buffer, glws::PROFILE_ES1);
+ visual[glws::PROFILE_ES2] = glws::createVisual(double_buffer, glws::PROFILE_ES2);
for ( ; i < argc; ++i) {
if (!parser.open(argv[i])) {
parser.close();
}
-
- delete visual;
+
+ for (int n = 0; n < glws::PROFILE_MAX; n++) {
+ delete visual[n];
+ }
+
glws::cleanup();
return 0;
DrawableMap::const_iterator it;
it = drawable_map.find(hdc);
if (it == drawable_map.end()) {
- return (drawable_map[hdc] = glws::createDrawable(visual));
+ return (drawable_map[hdc] = glws::createDrawable(visual[glretrace::defaultProfile]));
}
return it->second;
static void retrace_wglCreateContext(trace::Call &call) {
unsigned long long orig_context = call.ret->toUIntPtr();
- glws::Context *context = glws::createContext(glretrace::visual, NULL, glretrace::defaultProfile);
+ glws::Context *context = glws::createContext(glretrace::visual[glretrace::defaultProfile], NULL, glretrace::defaultProfile);
context_map[orig_context] = context;
}
int iHeight = call.arg(3).toUInt();
unsigned long long orig_pbuffer = call.ret->toUIntPtr();
- glws::Drawable *drawable = glws::createDrawable(glretrace::visual);
+ glws::Drawable *drawable = glws::createDrawable(glretrace::visual[glretrace::defaultProfile]);
drawable->resize(iWidth, iHeight);
drawable->show();
share_context = context_map[call.arg(1).toUIntPtr()];
}
- glws::Context *context = glws::createContext(glretrace::visual, share_context, glretrace::defaultProfile);
+ glws::Context *context = glws::createContext(glretrace::visual[glretrace::defaultProfile], share_context, glretrace::defaultProfile);
context_map[orig_context] = context;
}
PROFILE_CORE,
PROFILE_ES1,
PROFILE_ES2,
+ PROFILE_MAX
};
eglBindAPI(EGL_OPENGL_ES_API);
attribs.add(EGL_CONTEXT_CLIENT_VERSION, 2);
break;
+ default:
+ return NULL;
}
attribs.end(EGL_NONE);