Я рисую красный треугольник, который составляет половину экрана (экран 1024 * 768, цвет фона черный).Затем я читаю цвет каждого пикселя, используя glReadPixels.Должно быть 1024 * 768/2 пикселей с (r = 255, g = 0, b = 0), поскольку красный треугольник составляет половину размера экрана, а оставшиеся пиксели должны быть (r = 0, g =0, б = 0).Однако существует небольшое количество пикселей, которые не являются ни (r = 255, g = 0, b = 0), ни (r = 0, g = 0, b = 0):
некоторые из них (r = 64, g = 0, b = 0)
некоторые из них (r = 128, g = 0, b = 0)
и некоторые из них (r = 191, g = 0, b = 0)
Знаете ли вы, что может произойти?
Этомой фрагментный шейдер:
in vec3 fragmentColor;
out vec3 color;
void main(){
color = vec3(1,0.,0.);
}
и вот как я читаю цвет пикселя:
unsigned char *mycolor = (unsigned char *)malloc(3*width_here*height_here*sizeof(unsigned char *));
glReadPixels(0, 0, width_here, height_here, GL_RGB, GL_UNSIGNED_BYTE, (GLvoid*)(mycolor));