*/}}
Przeglądaj źródła

Init gl version

YimingWu 1 rok temu
rodzic
commit
0152e5deaf
1 zmienionych plików z 23 dodań i 4 usunięć
  1. 23 4
      la_kernel.c

+ 23 - 4
la_kernel.c

@@ -529,6 +529,17 @@ void laSetFontFolderPath(char* absolute){
     if(MAIN.SysFontDir[len-1]!='/'){ MAIN.SysFontDir[len]='/'; MAIN.SysFontDir[len+1]=0; }
 }
 
+void laProcessInitArguments(int argc, char* argv[]) {
+    MAIN.GLMajor=MAIN.GLMinor=-1;
+    char* arg = 0;
+    printf("%d\n",argc);
+    for(int i=0;i<argc;i++){
+        printf("%s\n",argv[i]);
+        if(strstr(argv[i], "--gl-version=")==argv[i]){ arg=&argv[i][strlen(argv[i])-3];
+            if(arg[0]>='2'&&arg[0]<='4'&&arg[1]=='.'&&arg[2]>='0'&&arg[2]<= '9'){ MAIN.GLMajor=arg[0]-'0'; MAIN.GLMinor=arg[2]-'0'; }
+        }
+    }
+}
 int laGetReadyWith(int GLMajor, int GLMinor, int BufferSamples){
 #ifdef __linux__
     SYSWINDOW root, win;
@@ -552,8 +563,9 @@ int laGetReadyWith(int GLMajor, int GLMinor, int BufferSamples){
     }
 
     la_ScanWacomDevices(MAIN.dpy,XIAllDevices);
-
-    MAIN.GLMajor=GLMajor; MAIN.GLMinor=GLMinor; MAIN.BufferSamples=BufferSamples;
+    
+    MAIN.GLMajor=MAIN.GLMajor<0?GLMajor:3; MAIN.GLMinor=MAIN.GLMinor<0:GLMinor:3; MAIN.BufferSamples=BufferSamples;
+    logPrint("Chosen OpenGL version %d.%d\n",MAIN.GLMajor,MAIN.GLMinor);
 
     int visual_attribs[] = {
         GLX_X_RENDERABLE    , True,
@@ -632,6 +644,8 @@ int laGetReadyWith(int GLMajor, int GLMinor, int BufferSamples){
     MAIN.wmfullscroff=XInternAtom(MAIN.dpy,"_NET_WM_STATE_FULLSCREEN",0);
 #endif //linux
 #ifdef _WIN32
+    logPrintNew("Initializing LaGUI...\n");
+
     setlocale(LC_ALL, "zh_CN.utf8");
 
     MAIN.hinstance = GetModuleHandle(NULL);
@@ -651,8 +665,9 @@ int laGetReadyWith(int GLMajor, int GLMinor, int BufferSamples){
     wt.lpszMenuName = 0;
     wt.style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC;
     if (!RegisterClassExW(&wt)) return 0;
-
-    MAIN.GLMajor = GLMajor; MAIN.GLMinor = GLMinor; MAIN.BufferSamples = BufferSamples;
+    
+    MAIN.GLMajor=MAIN.GLMajor<0?GLMajor:3; MAIN.GLMinor=MAIN.GLMinor<0?GLMinor:3; MAIN.BufferSamples=BufferSamples;
+    logPrint("Chosen OpenGL version %d.%d\n", MAIN.GLMajor, MAIN.GLMinor);
 
     SetProcessDPIAware();
 
@@ -673,6 +688,10 @@ int laGetReadyWith(int GLMajor, int GLMinor, int BufferSamples){
    // MAIN.tWND = hwnd;
     MAIN.glc = hglrc;
 
+    int major, minor; glGetIntegerv(GL_MAJOR_VERSION, &major); glGetIntegerv(GL_MINOR_VERSION, &minor);
+    logPrint("    OpenGL Version: %d.%d\n", major, minor);
+    logPrint("    OpenGL Renderer: %s\n", glGetString(GL_RENDERER));
+
     if (err = glewInit()) {
         printf("Init Glew Failed\n");
         printf("glewGetErrorString: %s\n", glewGetErrorString(err));