source: nanovis/branches/1.1/Trace.cpp @ 4804

Last change on this file since 4804 was 4612, checked in by ldelgass, 5 years ago

merge r3597 from trunk

  • Property svn:eol-style set to native
File size: 3.1 KB
Line 
1/* -*- mode: c++; c-basic-offset: 4; indent-tabs-mode: nil -*- */
2/*
3 * Copyright (C) 2004-2013  HUBzero Foundation, LLC
4 *
5 * Author: George A. Howlett <gah@purdue.edu>
6 */
7#include <stdio.h>
8#include <stdarg.h>
9#include <syslog.h>
10#include <string.h>
11
12#include <GL/glew.h>
13
14#include "nanovis.h"
15#include "Trace.h"
16
17#define MSG_LEN 2047
18
19void 
20LogMessage(int priority, const char *funcname,
21           const char *path, int lineNum, const char* fmt, ...)
22{
23    char message[MSG_LEN+1];
24    const char *s;
25    int length;
26    va_list lst;
27
28    va_start(lst, fmt);
29    s = strrchr(path, '/');
30    if (s == NULL) {
31        s = path;
32    } else {
33        s++;
34    }
35    if (priority & LOG_DEBUG) {
36        length = snprintf(message, MSG_LEN, "%s:%d(%s): ", s, lineNum, funcname);
37    } else {
38        length = snprintf(message, MSG_LEN, "%s:%d: ", s, lineNum);
39    }
40    length += vsnprintf(message + length, MSG_LEN - length, fmt, lst);
41    message[MSG_LEN] = '\0';
42
43    syslog(priority, "%s", message);
44}
45
46bool
47CheckFBO(GLenum *status) 
48{
49    *status = glCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT);
50    return (*status == GL_FRAMEBUFFER_COMPLETE_EXT);
51}
52
53void
54PrintFBOStatus(GLenum status, const char *prefix) 
55{
56#ifdef WANT_TRACE
57    const char *mesg;
58
59    switch(status) {
60    case GL_FRAMEBUFFER_COMPLETE_EXT:
61        mesg = "<<<< OK >>>>";                                          break;
62    case GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT:
63        mesg = "GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT";              break;
64    case GL_FRAMEBUFFER_UNSUPPORTED_EXT:
65        mesg = "GL_FRAMEBUFFER_UNSUPPORTED_EXT";                        break;
66    case GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT:
67        mesg = "GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT";      break;
68    case GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT:
69        mesg = "GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT";              break;
70    case GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT:
71        mesg = "GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT";                 break;
72    case GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT:
73        mesg = "GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT";             break;
74    case GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT:
75        mesg = "GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT";             break;
76    default:
77        TRACE("FB Status: %s: UNKNOWN framebuffer status %u", 
78               prefix, (unsigned int)status);
79        return;
80    }
81    TRACE("FB Status: %s: %s", prefix, mesg);
82#endif  /*WANT_TRACE*/
83}
84
85bool
86CheckGL(const char *prefix)
87{
88    GLenum status = (GLenum)glGetError();
89    if (status == GL_NO_ERROR) {
90        return true;
91    }
92#ifdef WANT_TRACE
93    const char *mesg;                   
94
95    switch(status) {
96    case GL_INVALID_ENUM:
97        mesg = "GL_INVALID_ENUM";                       break;
98    case GL_INVALID_VALUE:
99        mesg = "GL_INVALID_VALUE";                      break;
100    case GL_INVALID_OPERATION:
101        mesg = "GL_INVALID_OPERATION";                  break;
102    case GL_STACK_OVERFLOW:
103        mesg = "GL_STACK_OVERFLOW";                     break;
104    case GL_STACK_UNDERFLOW:
105        mesg = "GL_STACK_UNDERFLOW";                    break;
106    case GL_OUT_OF_MEMORY:
107        mesg = "GL_OUT_OF_MEMORY";                      break;
108    case GL_INVALID_FRAMEBUFFER_OPERATION_EXT:
109        mesg = "GL_INVALID_FRAMEBUFFER_OPERATION_EXT";  break;
110    default:
111        TRACE("GL Status: %s: Unknown status %d", prefix, status);
112        return false;
113    } 
114    TRACE("GL Status: %s: %s", prefix, mesg);
115#endif
116    return false;
117}
118
119
Note: See TracBrowser for help on using the repository browser.