本文整理汇总了C++中trace::Call::arg方法的典型用法代码示例。如果您正苦于以下问题:C++ Call::arg方法的具体用法?C++ Call::arg怎么用?C++ Call::arg使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类trace::Call
的用法示例。
在下文中一共展示了Call::arg方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: retrace_glXMakeCurrent
static void retrace_glXMakeCurrent(Trace::Call &call) {
glws::Drawable *new_drawable = getDrawable(call.arg(1).toUInt());
glws::Context *new_context = getContext(call.arg(2).toUIntPtr());
if (new_drawable == drawable && new_context == context) {
return;
}
if (drawable && context) {
glFlush();
if (!double_buffer) {
frame_complete(call.no);
}
}
bool result = ws->makeCurrent(new_drawable, new_context);
if (new_drawable && new_context && result) {
drawable = new_drawable;
context = new_context;
} else {
drawable = NULL;
context = NULL;
}
}
示例2: retrace_wglShareLists
static void retrace_wglShareLists(trace::Call &call) {
bool ret = call.ret->toBool();
if (!ret) {
return;
}
unsigned long long hglrc1 = call.arg(0).toUIntPtr();
unsigned long long hglrc2 = call.arg(1).toUIntPtr();
Context *share_context = getContext(hglrc1);
Context *old_context = getContext(hglrc2);
glfeatures::Profile profile = old_context->profile();
Context *new_context = glretrace::createContext(share_context, profile);
if (new_context) {
glretrace::Context *currentContext = glretrace::getCurrentContext();
if (currentContext == old_context) {
glretrace::makeCurrent(call, currentContext->drawable, new_context);
}
context_map[hglrc2] = new_context;
old_context->release();
}
}
示例3: retrace_glXCreateContextAttribsARB
static void retrace_glXCreateContextAttribsARB(Trace::Call &call) {
unsigned long long orig_context = call.ret->toUIntPtr();
glws::Context *share_context = getContext(call.arg(2).toUIntPtr());
glws::Context *context = ws->createContext(glretrace::visual, share_context);
context_map[orig_context] = context;
}
示例4: retrace_eglBindAPI
static void retrace_eglBindAPI(trace::Call &call) {
if (!call.ret->toBool()) {
return;
}
current_api = call.arg(0).toUInt();
}
示例5: retrace_wglSetPbufferAttribARB
static void retrace_wglSetPbufferAttribARB(trace::Call &call) {
glws::Drawable *pbuffer = pbuffer_map[call.arg(0).toUIntPtr()];
const trace::Value * attribList = &call.arg(1);
// call the window system's setPbufferAttrib function.
{
int attribs[100], j = 0;
const trace::Array *attribs_ = attribList ? attribList->toArray() : NULL;
for (size_t i = 0; i + 1 < attribs_->values.size(); i += 2) {
int param_i = attribs_->values[i]->toSInt();
if (param_i == 0) {
attribs[j] = 0;
}
attribs[j] = param_i;
attribs[j+1] = attribs_->values[i+1]->toSInt();
}
glretrace::setPbufferAttrib(pbuffer, attribs);
}
if (!pbuffer || !attribList)
return;
// Update the glws::Drawable's fields
const int undefined = -99999;
int val;
val = parseAttrib(attribList, WGL_MIPMAP_LEVEL_ARB, undefined);
if (val != undefined) {
pbuffer->mipmapLevel = val;
}
val = parseAttrib(attribList, WGL_CUBE_MAP_FACE_ARB, undefined);
if (val != undefined) {
// Drawable::cubeFace is integer in [0..5]
val -= WGL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB;
if (val < 0 || val > 5) {
fprintf(stderr, "Invalid WGL_CUBE_MAP_FACE_ARB value!\n");
}
else {
pbuffer->cubeFace = val;
}
}
}
示例6: retrace_wglMakeContextCurrentARB
static void retrace_wglMakeContextCurrentARB(trace::Call &call) {
bool ret = call.ret->toBool();
glws::Drawable *new_drawable = NULL;
glws::Drawable *new_readable = NULL;
Context *new_context = NULL;
if (ret) {
unsigned long long hglrc = call.arg(2).toUIntPtr();
if (hglrc) {
new_drawable = getDrawable(call.arg(0).toUIntPtr());
new_readable = getDrawable(call.arg(1).toUIntPtr());
new_context = getContext(hglrc);
}
}
glretrace::makeCurrent(call, new_drawable, new_readable, new_context);
}
示例7: retrace_CGLSetSurface
static void retrace_CGLSetSurface(trace::Call &call) {
if (call.ret->toUInt() != kCGLNoError) {
return;
}
unsigned long long ctx = call.arg(0).toUIntPtr();
unsigned long long cid = call.arg(1).toUInt();
int wid = call.arg(2).toUInt();
int sid = call.arg(3).toUInt();
(void)cid;
(void)wid;
glws::Drawable *drawable = getDrawable(sid);
context_drawable_map[ctx] = drawable;
}
示例8: retrace_CGLClearDrawable
static void retrace_CGLClearDrawable(trace::Call &call) {
if (call.ret->toUInt() != kCGLNoError) {
return;
}
unsigned long long ctx = call.arg(0).toUIntPtr();
context_drawable_map[ctx] = NULL;
}
示例9: retrace_wglUseFontOutlinesAW
static void retrace_wglUseFontOutlinesAW(trace::Call &call)
{
bool ret = call.ret->toBool();
if (!ret) {
return;
}
uint32_t first = call.arg(1).toUInt();
uint32_t count = call.arg(2).toUInt();
uint32_t listBase = call.arg(3).toUInt();
float extrusion = call.arg(5).toFloat();
for (uint32_t i = 0; i < count; ++i) {
glNewList(listBase + i, GL_COMPILE);
wglSystemFontOutlines(first + i, extrusion);
glEndList();
}
}
示例10: retrace_glXDestroyPbuffer
static void retrace_glXDestroyPbuffer(trace::Call &call) {
glws::Drawable *drawable = getDrawable(call.arg(1).toUInt());
if (!drawable) {
return;
}
delete drawable;
}
示例11: retrace_CGLSetVirtualScreen
static void retrace_CGLSetVirtualScreen(trace::Call &call) {
if (call.ret->toUInt() != kCGLNoError) {
return;
}
GLint screen = call.arg(1).toSInt();
if (screen != 0) {
retrace::warning(call) << "multiple virtual screens unsupported\n";
}
}
示例12: retrace_CGLSetSurface
static void retrace_CGLSetSurface(trace::Call &call) {
if (call.ret->toUInt() != kCGLNoError) {
return;
}
unsigned long long ctx = call.arg(0).toUIntPtr();
unsigned long long cid = call.arg(1).toUInt();
int wid = call.arg(2).toUInt();
int sid = call.arg(3).toUInt();
(void)cid;
(void)wid;
Context *context = getContext(ctx);
if (context) {
glws::Drawable *drawable = getDrawable(sid, context->profile());
context->drawable = drawable;
}
}
示例13: retrace_CGLCreateContext
static void retrace_CGLCreateContext(trace::Call &call) {
if (call.ret->toUInt() != kCGLNoError) {
return;
}
trace::Value & pix = call.argByName("pix");
const PixelFormat *pixelFormat = retrace::asObjPointer<PixelFormat>(call, pix);
glprofile::Profile profile = pixelFormat ? pixelFormat->profile : glretrace::defaultProfile;
unsigned long long share = call.arg(1).toUIntPtr();
Context *sharedContext = getContext(share);
const trace::Array *ctx_ptr = call.arg(2).toArray();
assert(ctx_ptr);
unsigned long long ctx = ctx_ptr->values[0]->toUIntPtr();
Context *context = glretrace::createContext(sharedContext, profile);
context_map[ctx] = context;
}
示例14: retrace_wglGetPbufferDCARB
static void retrace_wglGetPbufferDCARB(trace::Call &call) {
unsigned long long orig_hdc = call.ret->toUIntPtr();
if (!orig_hdc) {
return;
}
glws::Drawable *pbuffer = pbuffer_map[call.arg(0).toUIntPtr()];
drawable_map[orig_hdc] = pbuffer;
}
示例15: retrace_eglMakeCurrent
static void retrace_eglMakeCurrent(trace::Call &call) {
if (!call.ret->toSInt()) {
// Previously current rendering context and surfaces (if any) remain
// unchanged.
return;
}
glws::Drawable *new_drawable = getDrawable(call.arg(1).toUIntPtr());
Context *new_context = getContext(call.arg(3).toUIntPtr());
// Try to support GL_OES_surfaceless_context by creating a dummy drawable.
if (new_context && !new_drawable) {
if (!null_drawable) {
null_drawable = glretrace::createDrawable(last_profile);
}
new_drawable = null_drawable;
}
glretrace::makeCurrent(call, new_drawable, new_context);
}