decoder->gldBreak = gldBreak;
}
+Inspector::~Inspector()
+{
+ gldecoder_delete(decoder);
+}
+
void Inspector::decode(const char *data, unsigned len)
{
if(query_state)
GlPacket *pkt = packet_begin(FUNC_GLDQUERYLIMITS);
gldbg.send(pkt);
query_state = 0;
+ gldbg.clear_breakpoint(FUNC_GLXMAKECURRENT, BREAK_RETURN, this);
gldbg.resume_from_break(this);
}
}
{
printf(" Texture unit %d:\n", i);
const TexUnitState &unit = glstate.get_texture_unit(i);
- string descr = unit.describe_binding(GL_TEXTURE_2D);
- printf(" GL_TEXTURE_2D: %s\n", descr.c_str());
+ string descr = unit.describe_binding(GL_TEXTURE_1D);
+ printf(" GL_TEXTURE_1D: %s\n", descr.c_str());
+ descr = unit.describe_binding(GL_TEXTURE_2D);
+ printf(" GL_TEXTURE_2D: %s\n", descr.c_str());
descr = unit.describe_binding(GL_TEXTURE_3D);
- printf(" GL_TEXTURE_3D: %s\n", descr.c_str());
+ printf(" GL_TEXTURE_3D: %s\n", descr.c_str());
+ descr = unit.describe_binding(GL_TEXTURE_CUBE_MAP);
+ printf(" GL_TEXTURE_CUBE_MAP: %s\n", descr.c_str());
}
printf(" Buffers:\n");
const BufferState *buf = glstate.get_current_buffer(GL_ARRAY_BUFFER);
if(args.empty())
{
const map<unsigned, TextureState> &textures = state.get_textures();
- printf("%d texture objects:\n", textures.size());
+ printf("%lu texture objects:\n", textures.size());
for(map<unsigned, TextureState>::const_iterator i = textures.begin(); i!=textures.end(); ++i)
{
const TextureState &tex = i->second;
string descr = tex.describe();
- printf(" %d: %s, %d images\n", i->first, descr.c_str(), tex.images.size());
+ printf(" %d: %s, %lu images\n", i->first, descr.c_str(), tex.images.size());
}
}
else
printf("Texture object %d\n", id);
printf(" Target: %s\n", describe_enum(tex.target, "TextureTarget"));
printf(" Images:\n");
- for(unsigned i=0; i<tex.images.size(); ++i)
+ if(tex.target==GL_TEXTURE_CUBE_MAP)
+ {
+ static const char *face_labels[6] = { "+X", "-X", "+Y", "-Y", "+Z", "-Z" };
+ for(unsigned i=0; i<6; ++i)
+ {
+ printf(" Face %s:\n", face_labels[i]);
+ for(unsigned j=i; j<tex.images.size(); j+=6)
+ {
+ string descr = tex.images[j].describe();
+ printf(" Level %2d: %s\n", j/6, descr.c_str());
+ }
+ }
+ }
+ else
{
- string descr = tex.images[i].describe();
- printf(" Level %2d: %s\n", i, descr.c_str());
+ for(unsigned i=0; i<tex.images.size(); ++i)
+ {
+ string descr = tex.images[i].describe();
+ printf(" Level %2d: %s\n", i, descr.c_str());
+ }
}
printf(" Min. filter: %s\n", describe_enum(tex.min_filter, "TextureMinFilter"));
printf(" Mag. filter: %s\n", describe_enum(tex.mag_filter, "TextureMagFilter"));
- printf(" Wrap modes: S=%s / T=%s / R=%s\n", describe_enum(tex.wrap_s, "TextureWrapMode"),
- describe_enum(tex.wrap_t, "TextureWrapMode"), describe_enum(tex.wrap_r, "TextureWrapMode"));
+ printf(" Wrap modes:\n");
+ printf(" S: %s\n", describe_enum(tex.wrap_s, "TextureWrapMode"));
+ printf(" T: %s\n", describe_enum(tex.wrap_t, "TextureWrapMode"));
+ printf(" R: %s\n", describe_enum(tex.wrap_r, "TextureWrapMode"));
printf(" Compare mode: %s\n", describe_enum(tex.compare_mode, ""));
printf(" Compare func: %s\n", describe_enum(tex.compare_func, "DepthFunction"));
printf(" Generate mipmap: %s\n", (tex.generate_mipmap ? "true" : "false"));
if(args.empty())
{
const GlState::BufferMap &buffers = state.get_buffers();
- printf("%d buffers:\n", buffers.size());
+ printf("%lu buffers:\n", buffers.size());
for(GlState::BufferMap::const_iterator i=buffers.begin(); i!=buffers.end(); ++i)
{
string descr = i->second.describe();
if(args.empty())
{
const GlState::ShaderMap &shaders = state.get_shaders();
- printf("%d shader objects:\n", shaders.size());
+ printf("%lu shader objects:\n", shaders.size());
for(GlState::ShaderMap::const_iterator i=shaders.begin(); i!=shaders.end(); ++i)
{
string descr = i->second.describe();
if(args.empty())
{
const GlState::ProgramMap &programs = state.get_programs();
- printf("%d program objects:\n", programs.size());
+ printf("%lu program objects:\n", programs.size());
for(GlState::ProgramMap::const_iterator i=programs.begin(); i!=programs.end(); ++i)
{
string descr = i->second.describe();