ฉันใช้การเชื่อมโยง python OpenGL และพยายามใช้การเรียก opengl สมัยใหม่เท่านั้น ฉันมี VBO ที่มีจุดยอด และฉันกำลังพยายามเรนเดอร์ด้วยเมทริกซ์การฉายภาพออร์โธกราฟีที่ส่งผ่านไปยังจุดยอดเชเดอร์
ในปัจจุบัน ฉันกำลังคำนวณเมทริกซ์การฉายภาพด้วยค่าต่อไปนี้:
from numpy import array
w = float(width)
h = float(height)
n = 0.5
f = 3.0
matrix = array([
[2/w, 0, 0, 0],
[ 0, 2/h, 0, 0],
[ 0, 0, 1/(f-n), -n/(f-n)],
[ 0, 0, 0, 1],
], 'f')
#later
projectionUniform = glGetUniformLocation(shader, 'projectionMatrix')
glUniformMatrix4fv(projectionUniform, 1, GL_FALSE, matrix)
รหัสที่ฉันได้รับจากที่นี่:
สูตรสำหรับเมทริกซ์การฉายภาพมุมฉาก?
ดูเหมือนว่าจะทำงานได้ดี แต่ฉันต้องการให้ Origin ของฉันอยู่ที่มุมซ้ายล่างของหน้าจอ นี่เป็นฟังก์ชันที่ฉันสามารถใช้กับเมทริกซ์เพื่อให้ทุกอย่าง "ใช้งานได้" หรือฉันต้องแปลทุกวัตถุด้วย w/2 h/2 ด้วยตนเอง
หมายเหตุด้านข้าง: พิกัดจะตรงกับตำแหน่งพิกเซลโดยทำงานอย่างถูกต้องหรือไม่
เนื่องจากฉันใช้เทคนิค OpenGL สมัยใหม่ ฉันไม่คิดว่าควรใช้การเรียก gluOrtho2d หรือ GL_PROJECTION