*/}}
1
0
Prechádzať zdrojové kódy

With GL debugging available.

ChengduLittleA 1 rok pred
rodič
commit
975eeed090
2 zmenil súbory, kde vykonal 51 pridanie a 1 odobranie
  1. 50 0
      la_kernel.c
  2. 1 1
      resources/la_modelling.c

+ 50 - 0
la_kernel.c

@@ -379,6 +379,48 @@ void la_DestroySystemWindowWin32(laWindow* w) {
 };
 #endif
 
+
+void APIENTRY glDebugOutput(GLenum source, GLenum type, unsigned int id,
+    GLenum severity, GLsizei length, const char* message, const void* userParam) {
+    // ignore non-significant error/warning codes
+    if (id == 131169 || id == 131185 || id == 131218 || id == 131204) return;
+
+    printf("---------------\n");
+    printf("Debug message (%d): %s\n", id, message);
+
+    char* strsource = "";
+
+    switch (source) {
+    case GL_DEBUG_SOURCE_API:             strsource = "Source: API"; break;
+    case GL_DEBUG_SOURCE_WINDOW_SYSTEM:   strsource = "Source: Window System"; break;
+    case GL_DEBUG_SOURCE_SHADER_COMPILER: strsource = "Source: Shader Compiler"; break;
+    case GL_DEBUG_SOURCE_THIRD_PARTY:     strsource = "Source: Third Party"; break;
+    case GL_DEBUG_SOURCE_APPLICATION:     strsource = "Source: Application"; break;
+    case GL_DEBUG_SOURCE_OTHER:           strsource = "Source: Other"; break;
+    }printf("%s\n", strsource);
+
+    strsource = "";
+    switch (type) {
+    case GL_DEBUG_TYPE_ERROR:               strsource = "Type: Error"; break;
+    case GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR: strsource = "Type: Deprecated Behaviour"; break;
+    case GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR:  strsource = "Type: Undefined Behaviour"; break;
+    case GL_DEBUG_TYPE_PORTABILITY:         strsource = "Type: Portability"; break;
+    case GL_DEBUG_TYPE_PERFORMANCE:         strsource = "Type: Performance"; break;
+    case GL_DEBUG_TYPE_MARKER:              strsource = "Type: Marker"; break;
+    case GL_DEBUG_TYPE_PUSH_GROUP:          strsource = "Type: Push Group"; break;
+    case GL_DEBUG_TYPE_POP_GROUP:           strsource = "Type: Pop Group"; break;
+    case GL_DEBUG_TYPE_OTHER:               strsource = "Type: Other"; break;
+    }printf("%s\n", strsource);
+
+    strsource = "";
+    switch (severity) {
+    case GL_DEBUG_SEVERITY_HIGH:         strsource = "Severity: high"; break;
+    case GL_DEBUG_SEVERITY_MEDIUM:       strsource = "Severity: medium"; break;
+    case GL_DEBUG_SEVERITY_LOW:          strsource = "Severity: low"; break;
+    case GL_DEBUG_SEVERITY_NOTIFICATION: strsource = "Severity: notification"; break;
+    }printf("%s\n\n", strsource);
+}
+
 int la_CreateSystemWindow(laWindow *window, int SyncToVBlank){
     SYSGLCONTEXT glc;
 #ifdef __linux__
@@ -391,6 +433,13 @@ int la_CreateSystemWindow(laWindow *window, int SyncToVBlank){
 
 #ifdef _WIN32
     la_SetupGLEnviornment(window, hwnd, SyncToVBlank);
+
+
+    glEnable(GL_DEBUG_OUTPUT);
+    glEnable(GL_DEBUG_OUTPUT_SYNCHRONOUS);
+    glDebugMessageCallback(glDebugOutput, 0);
+    glDebugMessageControl(GL_DONT_CARE, GL_DONT_CARE, GL_DONT_CARE, 0, 0, GL_TRUE);
+
     RECT rc; GetClientRect(window->win, &rc);
     window->CW = rc.right - rc.left;
     window->CH = rc.bottom - rc.top;
@@ -827,6 +876,7 @@ int laGetReadyWith(laInitArguments* ia){
     SetPixelFormat(hdc, 1, &cpfd);
     hglrc = wglCreateContext(hdc);
     wglMakeCurrent(hdc, hglrc);
+
     //MAIN.hdc = hdc;
    // MAIN.tWND = hwnd;
     MAIN.glc = hglrc;

+ 1 - 1
resources/la_modelling.c

@@ -1248,7 +1248,7 @@ int OPINV_Add(laOperator *a, laEvent *e){
 
     if((!mo) || mo->Base.Type!=TNS_OBJECT_MESH || mo->Mode!=TNS_MESH_EDIT_MODE){ ad->Context=LA_ADD_CTX_OBJECT;
         if(strSame(str,"PLANE")){ tnsDeselectAllObjects(root); 
-            no=tnsCreateMeshPlane(root, "Plane",0,0,0,10); no->Flags|=TNS_OBJECT_FLAGS_SELECTED; memAssignRef(root,&root->Active,no); ran=1; }
+            no=tnsCreateMeshPlane(root, "Plane",0,0,0,1); no->Flags|=TNS_OBJECT_FLAGS_SELECTED; memAssignRef(root,&root->Active,no); ran=1; }
         elif(strSame(str,"INSTANCER")){ tnsDeselectAllObjects(root);
             no=tnsCreateInstancer(root, "Instancer",0,0,0); no->Flags|=TNS_OBJECT_FLAGS_SELECTED; memAssignRef(root,&root->Active,no); ran=1; }
         else{ laEnableOperatorPanel(a,a->This,e->x,e->y,200,200,0,0,0,0,0,0,0,0,e); return LA_RUNNING; }