2015-08-31 4 views
1

Я пытаюсь использовать два изображения opengl, один из которых разрежен, а другой используется как своего рода таблица страниц, в котором я отслеживаю фактически загруженную страницу.imageAtomicExchange не будет компилировать

У меня есть простой маленький шейдер, который выглядит следующим образом (основной комплект не входит):

#version 450 core 
#extension GL_ARB_shader_image_load_store : require 

uniform float gridSize; 
uniform float pageTableSize; 

bool isPageInMemoryOrRequest (in ivec3 pos) 
{ 
    bool returnValue = false; 
    if (255u == imageAtomicExchange(pageTable, pos, 128u)) 
    { 
     returnValue = true; 
    } 

    return returnValue; 
} 

И моя проблема в том, что это не будет компилироваться. Я получаю это сообщение: Ошибка C1115: Не удается найти совместимый перегружен функцию «imageAtomicExchange (STRUCT uimage3D1x8_bindless, ivec3, UINT)»

Я уверен, что я никогда не видел, что _bindless часть где-нибудь в спецификации и я не совсем точно знаю, как компилятор выясняет, что это безусловная текстура во время компиляции (или, может быть, все они без привязанности к последним драйверам).

У меня GTX660TI, и я использую драйверы 352.86. Мне интересно, был ли у кого-то такой вопрос раньше и мог рассказать мне, что может быть проблемой.

Заранее спасибо.

+1

Из любопытства, что именно является первым аргументом? – bvj

+0

Это был r8ui uimage3D, теперь я вижу, что забыл добавить это, но на вопрос был дан ответ, поэтому я рад, что на этот раз я не заплатил за эту ошибку. – Babaluno

ответ

0

В соответствии со спецификацией растяжения ARB_shader_image_load_store (раздел 8.X, функции Image), есть только очень ограниченное число поддерживаемых форматов для атомарных операций:

атомарные операции памяти поддерживаются только подмножество всех типов переменных изображения; должен быть либо:

  • переменных изображений с подписанными целочисленными компонентами (iimage *) и формат классификатор "r32i", или

  • переменного изображения с беззнаковыми целыми компонентами (uimage *) и формат «r32ui».

Я предполагаю, что из сообщения об ошибке, что вы пытались использовать формат r8ui, который не поддерживается.

+0

Вот и все, спасибо, я действительно не видел этого в спецификации. ура – Babaluno

Смежные вопросы