GLKit and Xquartz's GL support
The following warning appears when compiling pymol 1.7.4.0 under OS X 10.10.... layer1/Scene.cpp:9159:7: warning: 'gluPerspective' is deprecated: first deprecated in OS X 10.9 - "Use GLKMatrix4MakePerspective" [-Wdeprecated-declarations] gluPerspective(fov, aspRat, I->FrontSafe, I->BackSafe); ^ /System/Library/Frameworks/OpenGL.framework/Headers/glu.h:278:13: note: 'gluPerspective' has been explicitly marked deprecated here extern void gluPerspective (GLdouble fovy, GLdouble aspect, GLdouble zNear, GLdouble zFar) OPENGL_DEPRECATED_MSG(10_0, 10_9, "Use GLKMatrix4MakePerspective"); ^ from https://www.opengl.org/discussion_boards/showthread.php/184541-gluPerspectiv..., it would appear that we want to use something like... --- layer1/Scene.cpp.orig 2014-12-11 12:48:50.000000000 -0500 +++ layer1/Scene.cpp 2014-12-11 13:03:26.000000000 -0500 @@ -9156,7 +9156,8 @@ } if(!SettingGetGlobal_b(G, cSetting_ortho)) { float fov = SettingGetGlobal_f(G, cSetting_field_of_view); - gluPerspective(fov, aspRat, I->FrontSafe, I->BackSafe); + // gluPerspective(fov, aspRat, I->FrontSafe, I->BackSafe); + glMultMatrix(GLKMatrix4MakePerspective(fov, aspRat, I->FrontSafe, I->BackSafe).m); } else { height = fmax(R_SMALL4, -I->Pos[2]) * GetFovWidth(G) / 2.f; width = height * aspRat; However I am concerned about how using GLKit will interact with the X11 GL wrapper libraries. Have those been enhanced to interoperate with GLKit? Thanks in advance for any information. Jack
When pymol 1.7.4.0 is built with the following patch... -- pymol-1.7.4.0/layer1/Scene.cpp.orig 2014-12-11 12:48:50.000000000 -0500 +++ pymol-1.7.4.0/layer1/Scene.cpp 2014-12-11 13:30:54.000000000 -0500 @@ -57,6 +57,8 @@ #include"ScrollBar.h" #include "ShaderMgr.h" +#include <GLKit/GLKMatrix4.h> + #ifdef _PYMOL_IP_EXTRAS #include "IncentiveCopyToClipboard.h" #endif @@ -9156,7 +9158,8 @@ } if(!SettingGetGlobal_b(G, cSetting_ortho)) { float fov = SettingGetGlobal_f(G, cSetting_field_of_view); - gluPerspective(fov, aspRat, I->FrontSafe, I->BackSafe); + // gluPerspective(fov, aspRat, I->FrontSafe, I->BackSafe); + glMultMatrixf(GLKMatrix4MakePerspective(fov, aspRat, I->FrontSafe, I->BackSafe).m); } else { height = fmax(R_SMALL4, -I->Pos[2]) * GetFovWidth(G) / 2.f; width = height * aspRat; it compiles without errors and runs the demos correctly except the rendered images are about 10 times smaller than expected. On Thu, Dec 11, 2014 at 1:12 PM, Jack Howarth <howarth.mailing.lists@gmail.com> wrote:
The following warning appears when compiling pymol 1.7.4.0 under OS X 10.10....
layer1/Scene.cpp:9159:7: warning: 'gluPerspective' is deprecated: first deprecated in OS X 10.9 - "Use GLKMatrix4MakePerspective" [-Wdeprecated-declarations] gluPerspective(fov, aspRat, I->FrontSafe, I->BackSafe); ^ /System/Library/Frameworks/OpenGL.framework/Headers/glu.h:278:13: note: 'gluPerspective' has been explicitly marked deprecated here extern void gluPerspective (GLdouble fovy, GLdouble aspect, GLdouble zNear, GLdouble zFar) OPENGL_DEPRECATED_MSG(10_0, 10_9, "Use GLKMatrix4MakePerspective"); ^
from https://www.opengl.org/discussion_boards/showthread.php/184541-gluPerspectiv..., it would appear that we want to use something like...
--- layer1/Scene.cpp.orig 2014-12-11 12:48:50.000000000 -0500 +++ layer1/Scene.cpp 2014-12-11 13:03:26.000000000 -0500 @@ -9156,7 +9156,8 @@ } if(!SettingGetGlobal_b(G, cSetting_ortho)) { float fov = SettingGetGlobal_f(G, cSetting_field_of_view); - gluPerspective(fov, aspRat, I->FrontSafe, I->BackSafe); + // gluPerspective(fov, aspRat, I->FrontSafe, I->BackSafe); + glMultMatrix(GLKMatrix4MakePerspective(fov, aspRat, I->FrontSafe, I->BackSafe).m); } else { height = fmax(R_SMALL4, -I->Pos[2]) * GetFovWidth(G) / 2.f; width = height * aspRat;
However I am concerned about how using GLKit will interact with the X11 GL wrapper libraries. Have those been enhanced to interoperate with GLKit? Thanks in advance for any information. Jack
The scaling issue was due to the change in units of fov from degrees to radians so... glMultMatrixf(GLKMatrix4MakePerspective(fov*PI/180., aspRat, I->FrontSafe, I->BackSafe).m); solved the problem. That leaves one other deprecated function used by pymol... layer0/os_gl.cpp:99:59: warning: 'gluErrorString' is deprecated: first deprecated in OS X 10.9 [-Wdeprecated-declarations] printf("OpenGL-Error: Where? %s: %s\n", pos, (char *) gluErrorString(glerr)); ^ /System/Library/Frameworks/OpenGL.framework/Headers/glu.h:260:24: note: 'gluErrorString' has been explicitly marked deprecated here extern const GLubyte * gluErrorString (GLenum error) OPENGL_DEPRECATED(10_0, 10_9); ^ 1 warning generated. but it appears Apple has yet to produce a replacement for that functionality. On Thu, Dec 11, 2014 at 1:42 PM, Jack Howarth <howarth.mailing.lists@gmail.com> wrote:
When pymol 1.7.4.0 is built with the following patch...
-- pymol-1.7.4.0/layer1/Scene.cpp.orig 2014-12-11 12:48:50.000000000 -0500 +++ pymol-1.7.4.0/layer1/Scene.cpp 2014-12-11 13:30:54.000000000 -0500 @@ -57,6 +57,8 @@ #include"ScrollBar.h" #include "ShaderMgr.h"
+#include <GLKit/GLKMatrix4.h> + #ifdef _PYMOL_IP_EXTRAS #include "IncentiveCopyToClipboard.h" #endif @@ -9156,7 +9158,8 @@ } if(!SettingGetGlobal_b(G, cSetting_ortho)) { float fov = SettingGetGlobal_f(G, cSetting_field_of_view); - gluPerspective(fov, aspRat, I->FrontSafe, I->BackSafe); + // gluPerspective(fov, aspRat, I->FrontSafe, I->BackSafe); + glMultMatrixf(GLKMatrix4MakePerspective(fov, aspRat, I->FrontSafe, I->BackSafe).m); } else { height = fmax(R_SMALL4, -I->Pos[2]) * GetFovWidth(G) / 2.f; width = height * aspRat;
it compiles without errors and runs the demos correctly except the rendered images are about 10 times smaller than expected.
On Thu, Dec 11, 2014 at 1:12 PM, Jack Howarth <howarth.mailing.lists@gmail.com> wrote:
The following warning appears when compiling pymol 1.7.4.0 under OS X 10.10....
layer1/Scene.cpp:9159:7: warning: 'gluPerspective' is deprecated: first deprecated in OS X 10.9 - "Use GLKMatrix4MakePerspective" [-Wdeprecated-declarations] gluPerspective(fov, aspRat, I->FrontSafe, I->BackSafe); ^ /System/Library/Frameworks/OpenGL.framework/Headers/glu.h:278:13: note: 'gluPerspective' has been explicitly marked deprecated here extern void gluPerspective (GLdouble fovy, GLdouble aspect, GLdouble zNear, GLdouble zFar) OPENGL_DEPRECATED_MSG(10_0, 10_9, "Use GLKMatrix4MakePerspective"); ^
from https://www.opengl.org/discussion_boards/showthread.php/184541-gluPerspectiv..., it would appear that we want to use something like...
--- layer1/Scene.cpp.orig 2014-12-11 12:48:50.000000000 -0500 +++ layer1/Scene.cpp 2014-12-11 13:03:26.000000000 -0500 @@ -9156,7 +9156,8 @@ } if(!SettingGetGlobal_b(G, cSetting_ortho)) { float fov = SettingGetGlobal_f(G, cSetting_field_of_view); - gluPerspective(fov, aspRat, I->FrontSafe, I->BackSafe); + // gluPerspective(fov, aspRat, I->FrontSafe, I->BackSafe); + glMultMatrix(GLKMatrix4MakePerspective(fov, aspRat, I->FrontSafe, I->BackSafe).m); } else { height = fmax(R_SMALL4, -I->Pos[2]) * GetFovWidth(G) / 2.f; width = height * aspRat;
However I am concerned about how using GLKit will interact with the X11 GL wrapper libraries. Have those been enhanced to interoperate with GLKit? Thanks in advance for any information. Jack
participants (1)
-
Jack Howarth