mirror of https://github.com/buggins/dlangui.git
refactor setOrthoProjection, implement setPerspectiveProjection
This commit is contained in:
parent
aea38fb5fe
commit
0556ad5781
|
|
@ -60,7 +60,7 @@ class GLDrawBuf : DrawBuf, GLConfigCallback {
|
|||
override void saveConfiguration() {
|
||||
}
|
||||
override void restoreConfiguration() {
|
||||
glSupport.setOrthoProjection(Rect(0, 0, _dx, _dy));
|
||||
glSupport.setOrthoProjection(Rect(0, 0, _dx, _dy), Rect(0, 0, _dx, _dy));
|
||||
}
|
||||
|
||||
/// reserved for hardware-accelerated drawing - begins drawing batch
|
||||
|
|
@ -75,7 +75,7 @@ class GLDrawBuf : DrawBuf, GLConfigCallback {
|
|||
|
||||
/// reserved for hardware-accelerated drawing - ends drawing batch
|
||||
override void afterDrawing() {
|
||||
glSupport.setOrthoProjection(Rect(0, 0, _dx, _dy));
|
||||
glSupport.setOrthoProjection(Rect(0, 0, _dx, _dy), Rect(0, 0, _dx, _dy));
|
||||
_scene.draw();
|
||||
glSupport.flushGL();
|
||||
destroy(_scene);
|
||||
|
|
@ -923,11 +923,9 @@ public:
|
|||
}
|
||||
override void draw() {
|
||||
if (_handler) {
|
||||
|
||||
import derelict.opengl3.gl3 : glViewport;
|
||||
glViewport(_rc.left, _windowRect.height - _rc.bottom, _rc.width, _rc.height);
|
||||
glSupport.setOrthoProjection(_windowRect, _rc);
|
||||
_handler(_windowRect, _rc);
|
||||
glSupport.setOrthoProjection(_windowRect);
|
||||
glSupport.setOrthoProjection(_windowRect, _windowRect);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -979,9 +979,9 @@ class GLSupport {
|
|||
qtmatrix[y * 4 + x] = m[y][x];
|
||||
}
|
||||
|
||||
void setOrthoProjection(Rect view) {
|
||||
bufferDx = view.width;
|
||||
bufferDy = view.height;
|
||||
void setOrthoProjection(Rect windowRect, Rect view) {
|
||||
bufferDx = windowRect.width;
|
||||
bufferDy = windowRect.height;
|
||||
QMatrix4x4_ortho(view.left, view.right, view.top, view.bottom, 0.5f, 50.0f);
|
||||
//myGlOrtho(0, dx, 0, dy, 0.1f, 5.0f);
|
||||
|
||||
|
|
@ -995,11 +995,16 @@ class GLSupport {
|
|||
//checkgl!glPushMatrix();
|
||||
glLoadIdentity();
|
||||
}
|
||||
checkgl!glViewport(view.left, view.top, view.right, view.bottom);
|
||||
checkgl!glViewport(view.left, windowRect.height - view.bottom, view.width, view.height);
|
||||
}
|
||||
|
||||
void setPerspectiveProjection(float fieldOfView, float aspectRatio, float nearPlane, float farPlane) {
|
||||
// TODO
|
||||
void setPerspectiveProjection(Rect windowRect, Rect view, float fieldOfView, float nearPlane, float farPlane) {
|
||||
|
||||
bufferDx = windowRect.width;
|
||||
bufferDy = windowRect.height;
|
||||
float aspectRatio = cast(float)view.width / cast(float)view.height;
|
||||
QMatrix4x4_perspective(fieldOfView, aspectRatio, nearPlane, farPlane);
|
||||
checkgl!glViewport(view.left, windowRect.height - view.bottom, view.width, view.height);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue