Александр Павлюк: ну тут задача, чтобы создаваемое приложение умело работать со многими форматами файлов. Думал вот конвертить Ассимпом, но там не всё так гладко...
Станислав Силин: Да и на обоих рабочих компах карточки с OpenGL 3.0. А на целевых платформах OpenGL_ES, а там, как я понял, эти штуки-дрюки только с ES 3.0. А у нас везде 2.0 :-)
Придется, похоже, жить без знания размера бинарника шейдера... Спасибо, что помогли разобраться, Станислав!
есть подозрения, что не смотря на то, что функция glGetProgram живет со времен OpenGL2.0 - флаг GL_PROGRAM_BINARY_LENGTH живет только с 4 версии, ведь в мане по опенгл 3.0 про функцию glGetProgram его нет.
SaNNy32: это очень помогло. Оказывается, что при установке 7 винды redist студии идет по умолчанию. Но почему-то не полный, без OpenMP. После установки redist'a - все ок. Спасибо большое за помощь! Если это важно, создайте ответ и я его тут отмечу как решение :-)
Еще не понятно, где читать, кроме мануала (он как-то тяжеловат для начинающего)
Пример вот habrahabr.ru/post/261323
так тут очевидно про какую-то другую версию... Причем нигде не пишут, для какой версии тот или иной туториал.
Vladusch, и вам спасибо, что откликнулись. И скорее всего вы правы, т.к. такая мысль приходит не только к вам. В комментарии чуть выше я рассказал о дальнейших экспериментах с дровами.
Станислав, спасибо большое за развернутую информацию.
в cl.hpp, который я подключаю содержится вот такая информация про версию:
* \brief C++ bindings for OpenCL 1.0 (rev 48), OpenCL 1.1 (rev 33) and
* OpenCL 1.2 (rev 15)
* \author Benedict R. Gaster, Laurent Morichetti and Lee Howes
*
* Additions and fixes from:
* Brian Cole, March 3rd 2010 and April 2012
* Matt Gruenke, April 2012.
* Bruce Merry, February 2013.
* Tom Deakin and Simon McIntosh-Smith, July 2013
*
* \version 1.2.7
* \date January 2015
Обновление дров эффекта не дало - проект не запускается, пока рядом не положишь dll из C:/program files/Nvidia Corporation/OpenCL/OpenCL.dll - эти файлы установились вчера вместе с CUDA sdk.
А вот в C:/windows/system32 и C:/Windows/SysWOW64 - лежат все те же OpenCL.dll постарее, поменьше весом и еще и отличающиеся между собой.
Станислав Макаров: ну сейчас у меня в Qt заработало все из MinGW 32, и раз я таки счастливо собираюсь им пользоваться, значит мне надо будет какие-то MinGW dll-ки, которые я вычислю DepWalker'ом + стандартные QtXXXXX.dll. Приятно слышать, что OpenCL.dll универсальна. Просто смутило, что она мне досталась во время установки CUDA драйверов Nvidia.
PS каменты к вопросу ответом не поставить. Дайте хоть ваш профиль на Хабре/Geektimes плюсану :-)
Станислав Макаров: подложил "туда" - это рядом с exe файлом тестовой программки. Ну т.е. как вы и говорите, теперь винда находит dll в текущей папке и дальше не лезет в системные (где dll почему-то кривые ) - и все работает.
Вопрос такой, ведь эта OpenCL.dll - подходит только к моей видео карте? Или OpenCL.dll универсальна и отличается, только если битностью?
Владимир Мартьянов: вы тоже оказались правы, как Станислав в комментариях к вопросу: я подложил в собранным exe - dll-ку, которая установилась вчера - и все заработало. Но только в режиме 32 - и в qt MinGW и в VS2013. Получается - сама dll у меня 32 битная?
И возник теперь вопрос - ладно, у себя я смогу запускать приложения эти. Но как их другим передавать? Ведь моя dll им не подойдет?
Станислав Макаров: ну, теперь и в Qt заработало! Правда почему-то только с MinGW 32 бита. 64 бита не работает ни в студии, ни в Qt - походу эта OpenCL.dll - 32 битная почему-то.
А правильно ли я понимаю, что если я потом захочу запустить эту программку на другом компе, то будут какие-то проблемы? Там ведь дрова другие и устройства другие, и моя dll уже не пойдет.