過剰なウィンドウで PyOpenGL を使用してグラフィックを表示するコードがいくつかあります。Retina Macbook Pro では、このウィンドウは低解像度モードで表示され、1 つの OpenGL ピクセルが 4 つの物理ピクセルで表されます。完全なネイティブ解像度で表示されると、はるかに優れたものになります。
私の質問
glut などを使用して、Retina ディスプレイ上の Python でネイティブ解像度の OpenGL コンテキストを取得する方法はありますか?
問題の例
以下は、PyOpenGL プログラムの最小限の動作例です。特別なことは何もありません。この問題は、動作中の PyOpenGL コードで発生します。これは、スクリーンショットの拡大された詳細です。白い三角形を構成するピクセルは、OS X ウィジェットのピクセルのサイズの 4 倍であることに注意してください。これは、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()