Как заставить texelFetch читать и возвращать целые числа?C++

Программы на C++. Форум разработчиков
Anonymous
 Как заставить texelFetch читать и возвращать целые числа?

Сообщение Anonymous »

texelFetch отлично работает с числами с плавающей запятой, но переключение формата на целые у меня не работает.
Это рабочий пример с числами с плавающей запятой:

Код: Выделить всё

    float Test[5][2] = { 2.0f, 2.0f };

GLuint tex;
GLuint tbo;
glGenBuffers(1, &tbo);
glBindBuffer(GL_TEXTURE_BUFFER, tbo);
glBufferData(GL_TEXTURE_BUFFER, sizeof(Test), Test, GL_STATIC_DRAW);
glGenTextures(1, &tex);
glBindTexture(GL_TEXTURE_BUFFER, tex);
glTexBuffer(GL_TEXTURE_BUFFER, GL_RG32F, tbo);

// Fragment Shader:
uniform samplerBuffer textureData;

void main()
{
vec2 TexBegin = texelFetch(textureData, 0).xy;

if (TexBegin.x == 2)
{
color = vec4(1.0, 0.0, 0.0, 1.0);
}
else
{
color = vec4(0.0, 0.0, 0.0, 1.0);
}
}
Это формат int, возвращает только 0

Код: Выделить всё

    int Test[5][2] = { 2, 2 };

GLuint tex;
GLuint tbo;
glGenBuffers(1, &tbo);
glBindBuffer(GL_TEXTURE_BUFFER, tbo);
glBufferData(GL_TEXTURE_BUFFER, sizeof(Test), Test, GL_STATIC_DRAW);
glGenTextures(1, &tex);
glBindTexture(GL_TEXTURE_BUFFER, tex);
glTexBuffer(GL_TEXTURE_BUFFER, GL_RG32I, tbo);

// Fragment Shader:

uniform samplerBuffer textureData;

void main()
{
vec2 TexBegin = texelFetch(textureData, 0).xy;

if (TexBegin.x == 2)
{
color = vec4(1.0, 0.0, 0.0, 1.0);
}
else
{
color = vec4(0.0, 0.0, 0.0, 1.0);
}
}
Изменение ошибок vec2 на ivec2 с помощью: невозможно преобразовать число с плавающей запятой в целое число

Подробнее здесь: https://stackoverflow.com/questions/790 ... eturn-ints

Вернуться в «C++»