Спецификация OpenGL лежит (или это ошибка?)... Ссылаясь на макет для std140 с общими единообразными буферами, он утверждает:
"Набор правил, показанный в Tabl e L-1, используется компилятором GLSL для члены в едином блоке std140. Смещения члены в блоке накапливаются на основе размеров предыдущие члены в блоке (элементы, объявленные перед переменной в вопрос) и начальное смещение. Начальное смещение первого член всегда равен нулю.
Тип скалярной переменной (bool, int, uint, float) - размер скаляра в основные типы машин "
( http://www.opengl-redbook.com/appendices/AppL.pdf )
Поэтому, вооружившись этой информацией, я устанавливаю в шейдере единый блок, который выглядит примерно так:
// Spotlight.
layout (std140) uniform Spotlight
{
float Light_Intensity;
vec4 Light_Ambient;
vec3 Light_Position;
};
... только для того, чтобы обнаружить, что он не работает с последующей компоновкой std140, которую я устанавливаю на стороне CPU. То есть первые 4 байта являются плавающей точкой (размер скалярного типа машины для GLfloat), следующие 16 байтов являются vec4 и следующие 12 байтов являются vec3 (с 4 байтами, оставшимися на конце, чтобы принять во внимание правило, что vec3 действительно является vec4).
Когда я изменяю сторону CPU, чтобы указать плавающее значение, равное размеру vec4, т.е. 16 байт, и делаю смещения и размер буфера, делая это предположение, шейдер работает так, как и предполагалось.
Таким образом, либо спецификация неверна, либо я неправильно понял значение слова «скаляр» в данном контексте, либо ATI имеет ошибку драйвера. Может ли кто-нибудь пролить свет на эту загадку?
-121--1577362-
я использую класс java на http://json.org/javadoc/org/json/JSONObject.html .
Ниже приведен мой фрагмент кода.
String jsonResult = UtilMethods.getJSON(this.jsonURL, null);
json = new JSONObject(jsonResult);
getJSON возвращает следующую последовательность
{"LabelData":{"slogan":"AWAKEN YOUR SENSES","jobsearch":"JOB SEARCH","contact":"CONTACT","video":"ENCHANTING BEACHSCAPES","createprofile":"CREATE PROFILE"}}
Теперь... как получить значение «слоган»?
Я попробовал все методы, перечисленные на странице, но ни один из них не сработал.