本文整理汇总了C++中trace::Call类的典型用法代码示例。如果您正苦于以下问题:C++ Call类的具体用法?C++ Call怎么用?C++ Call使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Call类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: retrace_eglChooseConfig
static void retrace_eglChooseConfig(trace::Call &call) {
if (!call.ret->toSInt()) {
return;
}
trace::Array *attrib_array = call.arg(1).toArray();
trace::Array *config_array = call.arg(2).toArray();
trace::Array *num_config_ptr = call.arg(4).toArray();
if (!attrib_array || !config_array || !num_config_ptr) {
return;
}
glprofile::Profile profile;
unsigned renderableType = parseAttrib(attrib_array, EGL_RENDERABLE_TYPE, EGL_OPENGL_ES_BIT);
std::cerr << "renderableType = " << renderableType << "\n";
if (renderableType & EGL_OPENGL_BIT) {
profile = glprofile::Profile(glprofile::API_GL, 1, 0);
} else {
profile.api = glprofile::API_GLES;
if (renderableType & EGL_OPENGL_ES3_BIT) {
profile.major = 3;
} else if (renderableType & EGL_OPENGL_ES2_BIT) {
profile.major = 2;
} else {
profile.major = 1;
}
}
unsigned num_config = num_config_ptr->values[0]->toUInt();
for (unsigned i = 0; i < num_config; ++i) {
unsigned long long orig_config = config_array->values[i]->toUIntPtr();
profile_map[orig_config] = profile;
}
}
开发者ID:Dhanasekahar,项目名称:apitrace,代码行数:34,代码来源:glretrace_egl.cpp
示例2: retrace_memcpy
static void retrace_memcpy(trace::Call &call) {
void * destPtr;
size_t destLen;
retrace::toRange(call.arg(0), destPtr, destLen);
void * srcPtr;
size_t srcLen;
retrace::toRange(call.arg(1), srcPtr, srcLen);
size_t n = call.arg(2).toUInt();
if (!destPtr || !srcPtr || !n) {
return;
}
if (n > destLen) {
retrace::warning(call) << "dest buffer overflow of " << n - destLen << " bytes\n";
}
if (n > srcLen) {
retrace::warning(call) << "src buffer overflow of " << n - srcLen << " bytes\n";
}
n = std::min(n, destLen);
n = std::min(n, srcLen);
memcpy(destPtr, srcPtr, n);
}
开发者ID:Dhanasekahar,项目名称:apitrace,代码行数:28,代码来源:retrace_stdc.cpp
示例3: retrace_wglUseFontBitmapsAW
static void retrace_wglUseFontBitmapsAW(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();
GLint row_length = 0;
GLint alignment = 4;
_glGetIntegerv(GL_UNPACK_ROW_LENGTH, &row_length);
_glGetIntegerv(GL_UNPACK_ALIGNMENT, &alignment);
for (uint32_t i = 0; i < count; ++i) {
uint32_t dwChar = (first + i) % 256;
const Bitmap *bm = &wglSystemFontBitmaps[dwChar];
glPixelStorei(GL_UNPACK_ROW_LENGTH, bm->width);
glPixelStorei(GL_UNPACK_ALIGNMENT, 4);
glNewList(listBase + i, GL_COMPILE);
glBitmap(bm->width, bm->height,
bm->xorig, bm->yorig, bm->xmove, bm->ymove,
(const GLubyte *)bm->pixels);
glEndList();
}
glPixelStorei(GL_UNPACK_ROW_LENGTH, row_length);
glPixelStorei(GL_UNPACK_ALIGNMENT, alignment);
}
开发者ID:janesma,项目名称:apitrace,代码行数:35,代码来源:glretrace_wgl.cpp
示例4: 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;
}
}
开发者ID:pzick,项目名称:apitrace,代码行数:25,代码来源:glretrace_glx.cpp
示例5: retrace_wglCreatePbufferARB
static void retrace_wglCreatePbufferARB(trace::Call &call) {
unsigned long long orig_pbuffer = call.ret->toUIntPtr();
if (!orig_pbuffer) {
return;
}
int iWidth = call.arg(2).toUInt();
int iHeight = call.arg(3).toUInt();
const trace::Value *attribs = &call.arg(4);
glws::pbuffer_info pbInfo = {0, 0, false};
// XXX parse attrib list to populate pbInfo
int k;
k = parseAttrib(attribs, WGL_TEXTURE_FORMAT_ARB, WGL_NO_TEXTURE_ARB);
switch (k) {
case WGL_TEXTURE_RGB_ARB:
pbInfo.texFormat = GL_RGB;
break;
case WGL_TEXTURE_RGBA_ARB:
pbInfo.texFormat = GL_RGBA;
break;
case WGL_NO_TEXTURE_ARB:
pbInfo.texFormat = GL_NONE;
break;
default:
std::cerr << "error: invalid value for WGL_TEXTURE_FORMAT_ARB\n";
pbInfo.texFormat = GL_NONE;
}
k = parseAttrib(attribs, WGL_TEXTURE_TARGET_ARB, WGL_NO_TEXTURE_ARB);
switch (k) {
case WGL_TEXTURE_CUBE_MAP_ARB:
pbInfo.texTarget = GL_TEXTURE_CUBE_MAP;
break;
case WGL_TEXTURE_1D_ARB:
pbInfo.texTarget = GL_TEXTURE_1D;
break;
case WGL_TEXTURE_2D_ARB:
pbInfo.texTarget = GL_TEXTURE_2D;
break;
case WGL_NO_TEXTURE_ARB:
pbInfo.texTarget = GL_NONE;
break;
default:
std::cerr << "error: invalid value for WGL_TEXTURE_TARGET_ARB\n";
pbInfo.texTarget = GL_NONE;
}
pbInfo.texMipmap = !!parseAttrib(attribs, WGL_MIPMAP_TEXTURE_ARB, 0);
// WGL interface needs the HDC
pbInfo.hdc_drawable = getDrawable(call.arg(0).toUInt());
glws::Drawable *drawable = glretrace::createPbuffer(iWidth, iHeight,
&pbInfo);
pbuffer_map[orig_pbuffer] = drawable;
}
开发者ID:janesma,项目名称:apitrace,代码行数:59,代码来源:glretrace_wgl.cpp
示例6: retrace_glXCopySubBufferMESA
static void retrace_glXCopySubBufferMESA(trace::Call &call) {
glws::Drawable *drawable = getDrawable(call.arg(1).toUInt());
int x = call.arg(2).toSInt();
int y = call.arg(3).toSInt();
int width = call.arg(4).toSInt();
int height = call.arg(5).toSInt();
drawable->copySubBuffer(x, y, width, height);
}
开发者ID:janesma,项目名称:apitrace,代码行数:9,代码来源:glretrace_glx.cpp
示例7: retrace_memcpy
static void retrace_memcpy(trace::Call &call) {
void * dest = toPointer(call.arg(0));
void * src = toPointer(call.arg(1));
size_t n = call.arg(2).toUInt();
if (!dest || !src || !n) {
return;
}
memcpy(dest, src, n);
}
开发者ID:rawoul,项目名称:apitrace,代码行数:11,代码来源:retrace_stdc.cpp
示例8: retrace_glXMakeCurrent
static void retrace_glXMakeCurrent(trace::Call &call) {
if (call.ret && !call.ret->toBool()) {
// If false was returned then any previously current rendering context
// and drawable remain unchanged.
return;
}
glws::Drawable *new_drawable = getDrawable(call.arg(1).toUInt());
Context *new_context = getContext(call.arg(2).toUIntPtr());
glretrace::makeCurrent(call, new_drawable, new_context);
}
开发者ID:janesma,项目名称:apitrace,代码行数:12,代码来源:glretrace_glx.cpp
示例9: display
static void display(void) {
startTime = OS::GetTime();
Trace::Call *call;
while ((call = parser.parse_call())) {
const char *name = call->name();
if (retrace::verbosity >= 1) {
std::cout << *call;
std::cout.flush();
}
if (name[0] == 'C' && name[1] == 'G' && name[2] == 'L') {
glretrace::retrace_call_cgl(*call);
}
else if (name[0] == 'w' && name[1] == 'g' && name[2] == 'l') {
glretrace::retrace_call_wgl(*call);
}
else if (name[0] == 'g' && name[1] == 'l' && name[2] == 'X') {
glretrace::retrace_call_glx(*call);
} else {
retrace::retrace_call(*call);
}
if (!insideGlBeginEnd &&
drawable && context &&
call->no >= dump_state) {
glstate::dumpCurrentContext(std::cout);
exit(0);
}
delete call;
}
// Reached the end of trace
glFlush();
long long endTime = OS::GetTime();
float timeInterval = (endTime - startTime) * 1.0E-6;
if (retrace::verbosity >= -1) {
std::cout <<
"Rendered " << frame << " frames"
" in " << timeInterval << " secs,"
" average of " << (frame/timeInterval) << " fps\n";
}
if (wait) {
while (ws->processEvents()) {}
} else {
exit(0);
}
}
开发者ID:pzick,项目名称:apitrace,代码行数:53,代码来源:glretrace_main.cpp
示例10: retrace_wglCreatePbufferARB
static void retrace_wglCreatePbufferARB(trace::Call &call) {
unsigned long long orig_pbuffer = call.ret->toUIntPtr();
if (!orig_pbuffer) {
return;
}
int iWidth = call.arg(2).toUInt();
int iHeight = call.arg(3).toUInt();
glws::Drawable *drawable = glretrace::createPbuffer(iWidth, iHeight);
pbuffer_map[orig_pbuffer] = drawable;
}
开发者ID:goneflash,项目名称:apitrace,代码行数:13,代码来源:glretrace_wgl.cpp
示例11: retrace_wglCreateContextAttribsARB
static void retrace_wglCreateContextAttribsARB(trace::Call &call) {
unsigned long long orig_context = call.ret->toUIntPtr();
if (!orig_context) {
return;
}
Context *share_context = getContext(call.arg(1).toUIntPtr());
const trace::Value * attribList = &call.arg(2);
glfeatures::Profile profile = parseContextAttribList(attribList);
Context *context = glretrace::createContext(share_context, profile);
context_map[orig_context] = context;
}
开发者ID:janesma,项目名称:apitrace,代码行数:14,代码来源:glretrace_wgl.cpp
示例12: retrace_wglMakeCurrent
static void retrace_wglMakeCurrent(trace::Call &call) {
bool ret = call.ret->toBool();
glws::Drawable *new_drawable = NULL;
Context *new_context = NULL;
if (ret) {
unsigned long long hglrc = call.arg(1).toUIntPtr();
if (hglrc) {
new_drawable = getDrawable(call.arg(0).toUIntPtr());
new_context = getContext(hglrc);
}
}
glretrace::makeCurrent(call, new_drawable, new_context);
}
开发者ID:janesma,项目名称:apitrace,代码行数:15,代码来源:glretrace_wgl.cpp
示例13: retrace_eglBindAPI
static void retrace_eglBindAPI(trace::Call &call) {
if (!call.ret->toBool()) {
return;
}
current_api = call.arg(0).toUInt();
}
开发者ID:Dhanasekahar,项目名称:apitrace,代码行数:7,代码来源:glretrace_egl.cpp
示例14: retrace
void Retracer::retrace(trace::Call &call) {
call_dumped = false;
if (verbosity >= 1) {
dumpCall(call);
}
Callback callback = 0;
trace::Id id = call.sig->id;
if (id >= callbacks.size()) {
callbacks.resize(id + 1);
callback = 0;
} else {
callback = callbacks[id];
}
if (!callback) {
Map::const_iterator it = map.find(call.name());
if (it == map.end()) {
callback = &unsupported;
} else {
callback = it->second;
}
callbacks[id] = callback;
}
assert(callback);
assert(callbacks[id] == callback);
callback(call);
}
开发者ID:kanru,项目名称:apitrace,代码行数:32,代码来源:retrace.cpp
示例15: 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;
}
开发者ID:pzick,项目名称:apitrace,代码行数:7,代码来源:glretrace_glx.cpp
示例16: 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();
}
}
开发者ID:janesma,项目名称:apitrace,代码行数:25,代码来源:glretrace_wgl.cpp
示例17: 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;
}
}
}
开发者ID:janesma,项目名称:apitrace,代码行数:46,代码来源:glretrace_wgl.cpp
示例18: 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;
}
开发者ID:hramrach,项目名称:apitrace,代码行数:17,代码来源:glretrace_cgl.cpp
示例19: 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;
}
开发者ID:hramrach,项目名称:apitrace,代码行数:9,代码来源:glretrace_cgl.cpp
示例20: retrace_glXDestroyPbuffer
static void retrace_glXDestroyPbuffer(trace::Call &call) {
glws::Drawable *drawable = getDrawable(call.arg(1).toUInt());
if (!drawable) {
return;
}
delete drawable;
}
开发者ID:janesma,项目名称:apitrace,代码行数:9,代码来源:glretrace_glx.cpp
注:本文中的trace::Call类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论