Ich arbeite an einer GLFW-Anwendung und ich bemerkte ein Problem bei der Größenänderung des Fensters.GLFW Umfrage wartet, bis die Fenstergröße geändert wurde.
Während der Benutzer das Fenster skaliert, die glfwPollEvents()
Funktion wartet, bis der Benutzer beendet. Dies bedeutet, dass während der Skalierung des Fensters die Renderfunktion nicht aufgerufen wird und schreckliche Artefakte erzeugt werden.
Ich habe um das funktionierte durch die Render-Funktion aus der Hauptschleife sowie die Größe des Fensters Rückruf Aufruf:
#include <GLFW/glfw3.h>
static void render(GLFWwindow* window) {
glfwMakeContextCurrent(window);
glClear(GL_COLOR_BUFFER_BIT);
glfwSwapBuffers(window);
}
static void window_size_callback(GLFWwindow* window, int width, int height) {
render(window);
glViewport(0, 0, width, height);
}
int main(void) {
if (!glfwInit()) {
return -1;
}
GLFWwindow* window = glfwCreateWindow(640, 480, "Terrain chunk render", NULL, NULL);
if (!window) {
glfwTerminate();
return -1;
}
glfwSetWindowSizeCallback(window, window_size_callback);
while (!glfwWindowShouldClose(window)) {
render(window);
glfwPollEvents();
}
glfwTerminate();
return 0;
}
Dies bedeutet jedoch, dass die Funktion machen wird nicht aufgerufen, wenn der Benutzer Halten Sie die Maustaste gedrückt, nachdem Sie das Fenster skaliert haben, ohne es tatsächlich zu bewegen. Gibt es eine effiziente Möglichkeit, dies zu umgehen und die Renderfunktion konsistenter zu nennen?
Ich bin nicht wirklich sicher, aber haben Sie die Windows-Systemeinstellungen überprüft? Wenn nicht, könnten Sie unter Windows 7 versuchen, [this] (http://answers.microsoft.com/en-us/windows/forum/windows_7-desktop/in-windows-7-how-do-i-show- window-contents-while/18e3aee2-bcc7-4005-a45d-c5613cf6eb3c) wie vorgeschlagen und sehen, wie es geht. – Keugyeol