Мерцает выводимый на экран текст. Двойная буферизация включена, и по идее ничего мерцать не должно. Линии, многоугольники и круги не мерцают, но в тексте мерцает все знаки, кроме первой буквы. При выводе нескольких строк не моргает только первая буква в первой строке. Вопрос знатокам opengl: ЧЯДНТ?
Мне удалось установить что моргание текста уменшьается если увеличть время в таймере.
#include <stdlib.h>
#include <stdio.h>
#include <GL/glut.h>
#include <cstdio>
#include "ftgl.h"
void RenderScene(void) {
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1.0f , 0.2f , 0.2f);
glRasterPos2f(1, 1);
FTGLPixmapFont font("/usr/share/fonts/truetype/ttf-dejavu/DejaVuSansMono.ttf");
if(font.Error())
printf("Font not found\n");
font.FaceSize(30);
font.Render("Привет, мир!");
glRasterPos2f(1, -4);
glutSwapBuffers();
}
void ChangeSize(GLsizei w, GLsizei h) {
if (h == 0)
h = 1;
glViewport(0,0,w,h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
GLfloat aspectRatio = (GLfloat)w/(GLfloat)h;
if (w <= h)
glOrtho(-10.0, 10.0, -10.0/aspectRatio, 10.0/aspectRatio, 1.0,-1.0);
else
glOrtho(-10.0*aspectRatio, 10.0*aspectRatio, -10.0, 10.0, 1.0,-1.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
void onTimer(int a) {
glutPostRedisplay();
glutTimerFunc(16,onTimer,1);
}
int main(int argc, char **argv) {
glutInit(&argc, argv);
glutInitWindowSize(800, 600);
glutCreateWindow("hello");
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH);
glutDisplayFunc(RenderScene);
glutReshapeFunc(ChangeSize);
glutTimerFunc(16,onTimer,1);
glClearColor(1.0f, 1.0f, 0.8f, 1.0f);
glutMainLoop();
return 0;
}