我有一些使用PyOpenGL在glut窗口中显示图形的代码。在Retina MacBook Pro上,该窗口以低分辨率模式显示,一个OpenGL像素由四个物理像素表示。如果它能以完整的本地分辨率显示会更好。
我的问题
在Retina显示器上,是否有任何方法可以使用glut或其他方式在Python中获得本地分辨率的OpenGL上下文?
问题示例
以下是一个最小化的PyOpenGL程序示例。它没有什么特别之处 - 任何工作的PyOpenGL代码都会出现这个问题。下面是截图的放大细节。请注意,构成白色三角形的像素是OS X小部件像素的四倍。这是未专门设计用于Retina设备的程序的默认设置。我想知道如何关闭PyOpenGL程序的此功能。
以下是代码:
from OpenGL.GL import *
from OpenGL.GLUT import *
from OpenGL.GLU import *
import os
def initFunc():
glDisable(GL_DEPTH_TEST)
glClearColor(0.0, 0.0, 0.0, 0.0)
glMatrixMode(GL_PROJECTION)
glLoadIdentity()
gluOrtho2D(0.0, 400.0, 0.0, 400.0)
def displayFunc():
glClear(GL_COLOR_BUFFER_BIT)
glColor3f(1.0, 1.0, 1.0)
glBegin(GL_TRIANGLES)
glVertex2f(10.0, 10.0)
glVertex2f(10.0, 100.0)
glVertex2f(100.0, 100.0)
glEnd()
glFlush()
if __name__ == '__main__':
glutInit()
glutInitWindowSize(400,400)
glutCreateWindow("GL test")
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB)
glutDisplayFunc(displayFunc)
initFunc()
os.system('''/usr/bin/osascript -e 'tell app "Finder" to set frontmost of process "Python" to true' ''')
# prevent GL window from appearing behind other applications
glutMainLoop()
from AppKit import NSOpenGLView
获取的NSOpenGLView
即可。 - mmgp