Вот весь мой фрагмент кода шейдера, это довольно просто:OpenGL ES 2.0 Shader Float Data Precision
precision highp float;
void main(void)
{
float a = 66061311.0;
if(a == 66061312.0)
gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);
else
gl_FragColor = vec4(0.0, 1.0, 0.0, 1.0);
}
Почему экран ясно красный. Когда я установил значение 66061315.0, на экране будет ясно зеленое. Это меня смущает. По моему мнению, 66061311.0 находится в пределах диапазона типа float.
Как я могу исправить или обойти это?
FIrst, не отправляйте код как изображения. Просто вставьте его правильно в свой вопрос. Во-вторых, мы не знаем, какие значения имеют элементы «color». Во-вторых, мы не знаем, с какой точностью объявлен ваш float. Если вы выбрали 'precision mediump float;', то ваш представляемый целочисленный диапазон будет минимально '[-2^15, 2^15 -1]', что, конечно, меньше вашего левого операнда. – thokra
Извините, я изменил вопрос. Я использую высокую точность. Но результат все тот же, что и раньше. Я попробовал на ПК и Android Mobile Phone с ARM Mali GPU, результаты остались прежними. –