Оптимизация функции отображения OpenGL
Я пытаюсь оптимизировать функцию отображения моего кода OpenGL C++ и использую библиотеки Glad.h,glm.h,GLFW.h, моя функция отображения работает слишком медленно, а при рендеринге объекта на экране я не могу понять почему это происходит
Я попытался несколько раз промыть экран разными строками кода, но безуспешно!
void display(GLFWwindow* window)
{
glClearColor(0, 0, 0, 1);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
int w, h;
glfwGetWindowSize(window, &w, &h);
glViewport(0, 0, w, h);
// create a world with dimensions x:[-SIM_W,SIM_W] and y:[0,SIM_W*2]
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
const double ar = w / static_cast< double >(h);
glOrtho(ar * -SIM_W, ar * SIM_W, 0, 2 * SIM_W, -1, 1);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
// Draw Fluid Particles
glPointSize(r * 2);
glVertexPointer(2, GL_FLOAT, sizeof(Particle), &particles[0].pos);
glColorPointer(3, GL_FLOAT, sizeof(Particle), &particles[0].r);
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_COLOR_ARRAY);
glDrawArrays(GL_POINTS, 0, static_cast< GLsizei >(particles.size()));
glDisableClientState(GL_VERTEX_ARRAY);
glDisableClientState(GL_COLOR_ARRAY);
}
и это моя основная функция:
int CALLBACK WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
init(300);
glfwInit();
GLFWwindow* window = glfwCreateWindow(512, 512, "SPH", NULL, NULL);
glfwMakeContextCurrent(window);
gladLoadGLLoader((GLADloadproc)glfwGetProcAddress);
glfwSwapInterval(1);
glfwSetKeyCallback(window, keyboard);
// glfwSetCursorPosCallback(window, motion);
//glfwSetMouseButtonCallback(window, mouse);
while (!glfwWindowShouldClose(window))
{
display(window);
glfwWaitEvents();
//for (size_t i = 0; i < stepsPerFrame; ++i)
{
step();
}
glFlush();
glfwSwapBuffers(window);
glFlush();
//fwWaitEvents();
}
glfwTerminate();
return 0;
}