Discussion:
[Xquartz-dev] GLKit and Xquartz's GL support
Jack Howarth
2014-12-11 18:12:18 UTC
Permalink
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-gluPerspective-vs-GLKMatrix4MakePerspective-use-in-OSX-OpenGL,
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
Jack Howarth
2014-12-11 18:42:26 UTC
Permalink
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
Post by Jack Howarth
The following warning appears when compiling pymol 1.7.4.0 under
OS X 10.10....
first deprecated in OS X 10.9 - "Use GLKMatrix4MakePerspective"
[-Wdeprecated-declarations]
gluPerspective(fov, aspRat, I->FrontSafe, I->BackSafe);
^
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-gluPerspective-vs-GLKMatrix4MakePerspective-use-in-OSX-OpenGL,
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
Jack Howarth
2014-12-11 21:32:05 UTC
Permalink
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
Post by Jack Howarth
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
Post by Jack Howarth
The following warning appears when compiling pymol 1.7.4.0 under
OS X 10.10....
first deprecated in OS X 10.9 - "Use GLKMatrix4MakePerspective"
[-Wdeprecated-declarations]
gluPerspective(fov, aspRat, I->FrontSafe, I->BackSafe);
^
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-gluPerspective-vs-GLKMatrix4MakePerspective-use-in-OSX-OpenGL,
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
Loading...