Я новичок в перенасыщении, и я не могу решить эту проблему. Я рисую точки по щелчку мыши, но всегда видна только последняя точка. Как я могу сделать старшие точки не исчезающими, и на каждом клике просто добавьте еще одно к ним? (не сохраняя все точки как переменные или что-то, просто заставьте их не исчезать из окна при рисовании нового) Большое вам спасибо.перенасыщение - добавление точек к окну
#include <iostream>
#include <math.h>
#include "gl/glut.h"
#include <windows.h>
using namespace std;
typedef struct {
float x;
float y;
} Point;
typedef struct {
int r;
int g;
int b;
} Color;
Point novy;
Color nova;
void Display(void){
glClear(GL_COLOR_BUFFER_BIT);
glPointSize(8);
glBegin(GL_POINTS);
glColor3f(nova.r,nova.g,nova.b);
glVertex2f(novy.x,novy.y);
glEnd();
glFlush();
}
void onMouse(int button, int state, int x, int y){
if(button == GLUT_LEFT_BUTTON && state == GLUT_DOWN){
novy.x = x/(double) 300 * (1 - (-1)) + (-1);
novy.y = (1 - y/(double) 300) * (1 - (-1)) + (-1);
glutPostRedisplay();
}
}
int main(void){
cout << "suradnice \n";
cin >> novy.x;
cin >> novy.y;
cout << "rgb farba \n";
cin >> nova.r;
cin >> nova.g;
cin >> nova.b;
glutCreateWindow("This is the window title");
glutDisplayFunc(Display);
glutMouseFunc(onMouse);
glutMainLoop();
return 0;
}
Так что в opengl нельзя сохранить предыдущее состояние окна, а затем просто добавить в него новый элемент? – user2851650
Вы можете найти ** glFrameBuffers **, чтобы сделать это, но это немного сложно, так как вы сказали, что новичок в opengl. –