Версия для печати темы
Форум на CrossPlatform.RU _ Qt Система рисования. Печать _ OpenGL и Qt4
Автор: registr 12.2.2010, 16:56
Опять про OpenGL. Написал приложение на Qt 4.3.0, которое у меня выполняется корректно, а на некоторых компах некорректно. Суть программы в том, что по высоте над поверхностью она дает цвет точке данной высоты.
Такое ощущение, что не работает функция C_fun (см. исходник). На компе, где компилировал, работает как надо, на некоторых (но не на всех) работает некорректно (фигура строится полностью серым цветом).
1) Корректно или нет запускается у вас мое приложение?
2) Какие советы и предложения, чтобы исправить данный дефект???
http://mygame.civfanatics.ru/objects/mygame.projects/mygame.conceptions/planet&maps/demos/2010_02_testland_3_3_2+open_source.zip
Автор: Rocky 12.2.2010, 17:54
у меня не запустилась, требует mingw.dll. фиг с ней, попробовал скомпилить (у меня щас msvc 2008).. Вопрос. А что вот это может компилироваться?
int Mtriangle_Sph_size; // число треугольников
Mtriangle_Sph_size=5;
for (int i=0; i<iteration_max; i++)
{
Mtriangle_Sph_size=4*Mtriangle_Sph_size; // число треугольников
}
float Mtriangle_Sph[Mtriangle_Sph_size][3][3];
судя по всему да....раз бинарник есть.. но это как-то хм... странно... Т.е. mingw такое проглатывает? Ради интереса ща в g++ попробую
Автор: registr 12.2.2010, 18:23
http://mygame.civfanatics.ru/objects/mygame.projects/mygame.files/dll.files/Qt4.dll.files.rar
Компилирую через обычное кьютеховское консольное меню стандартным образом:
qmake -project
в файл-проект добавляю QT += opengl
qmake
make
Вопрос собственно в другом, почему на разных машинах приложение работает с переменным успехом. Думал раньше, что видеокарта тут причем. Теперь так не думаю. Как будто скомпилированный код понимается по разному, когда функция C_fun не выполняется и ставится заранее установленный цвет -- серый.
???
Автор: Litkevich Yuriy 12.2.2010, 18:28
Цитата(Rocky @ 12.2.2010, 20:54)
А что вот это может компилироваться?
а что именно не компилируется. на какую строчку кода ругается?
Автор: Rocky 12.2.2010, 18:38
Ну как бы либо я отстал... но вот так никогда нельзя было делать:
int z = 5;
double x[z];
либо #define z 5
либо const int z = 5;
Потому что компилятор должен знать заранее сколько памяти выделять под статический (!) массив. Это же не динамический... так можно вообще так делать
int z = 0;
cin << z;
int x[z];
Чето странное либо я сильно туплю в конце недели )
Зы.
1) Запустилось
2) Цвет верхней точки красный (даже не ораженвый как у рядом стоящих (или лежащих?) точек)
Автор: registr 12.2.2010, 18:48
Цитата(Rocky @ 12.2.2010, 18:38)
Зы.
1) Запустилось
2) Цвет верхней точки красный (даже не ораженвый как у рядом стоящих (или лежащих?) точек)
Можно крутить мышью )
Фишка в том, что у кого то запускается правильно, у кого то неправильно. Я не могу разобраться почему. Help.
Автор: BRE 12.2.2010, 18:58
Цитата(Rocky @ 12.2.2010, 18:38)
Потому что компилятор должен знать заранее сколько памяти выделять под статический (!) массив. Это же не динамический... так можно вообще так делать
int z = 0;
cin << z;
int x[z];
Чето странное либо я сильно туплю в конце недели )
Это расширение gcc: возможность создания массивов переменной длины на стеке.
Автор: DEADHUNT 12.2.2010, 19:04
Цитата(BRE @ 12.2.2010, 18:58)
Это расширение gcc: возможность создания массивов переменной длины на стеке.
это не расширение, а variable length array из стандарта C99.
Автор: BRE 12.2.2010, 19:09
Цитата(DEADHUNT @ 12.2.2010, 19:04)
Цитата(BRE @ 12.2.2010, 18:58)
Это расширение gcc: возможность создания массивов переменной длины на стеке.
это не расширение, а variable length array из стандарта C99.
Они это называют Extensions???
http://gcc.gnu.org/onlinedocs/gcc/C-Extensions.html#C-Extensions
Подраздел:
Variable Length: Arrays whose length is computed at run time.
Автор: Rocky 12.2.2010, 19:16
Litkevich Yuriy извини за ссылку на другой форум... Если нельзя удали(
registr
Спросил у старших товарищей, посмотри, может в это дело.
http://www.progz.ru/forum/index.php?showtopic=42047&st=0&gopid=194116&#entry194116
Я про вывод. Посмотри, реально ли там те значения, которые ты кладешь
в любом случае nmake такое не понимает )
Автор: registr 12.2.2010, 19:17
BRE
DEADHUNT
Litkevich Yuriy
Хотелось бы узнать работает ли?
Автор: DEADHUNT 12.2.2010, 19:21
Цитата(BRE @ 12.2.2010, 19:09)
Они это называют Extensions???
http://gcc.gnu.org/onlinedocs/gcc/C-Extens...ml#C-Extensions
Подраздел:
Variable Length: Arrays whose length is computed at run time.
gcc здесь не причем.
стандарт не пробовал смотреть http://www.open-std.org/JTC1/SC22/WG14/www/docs/n1425.pdf (6.7.6.2 Array declarators)?
Автор: BRE 12.2.2010, 19:26
Цитата(registr @ 12.2.2010, 19:17)
Хотелось бы узнать работает ли?
У меня белое окно.... Двигал мышкой, жал не стрелки и пробел, ничего не изменяется.
Цитата(DEADHUNT @ 12.2.2010, 19:21)
gcc здесь не причем. стандарт не пробовал смотреть
Если я не ошибаюсь, то в gcc это было в расширениях еще до принятия C99.
Вот там я про это и прочитал, если это есть и в стандарте, ну что же ... хорошо.
Автор: Rocky 12.2.2010, 19:26
в винде работает, под лиуксом - тоже белое окно с крестом )
Автор: registr 12.2.2010, 19:35
Цитата(Rocky @ 12.2.2010, 19:16)
registr
Спросил у старших товарищей, посмотри, может в это дело.
Я про вывод. Посмотри, реально ли там те значения, которые ты кладешь
Все точки принимают значение серого цвета, который указан ранее. Как будто функция C_fun не меняет значение цветов. C_fun функция типа void, ее параметр 3-х мерный массив треугольников и адреса 3-х rgb цветов. Если бы я неправильно создал функцию, то она и у меня бы не строила. Что за фокусы такие?
Цитата(BRE @ 12.2.2010, 19:26)
У меня белое окно.... Двигал мышкой, жал не стрелки и пробел, ничего не изменяется.
Цитата(Rocky @ 12.2.2010, 19:26)
в винде работает, под лиуксом - тоже белое окно с крестом )
А он что не строит рельеф???
Я что забыл вложить файл CrearMap.map?
Должно происходить построение рельефа
с exe-шником должен лежать файл CrearMap.map, оттуда прога загружает чистую карту и накладывает на нее рельеф с градиентом цвета. Прога и рельеф не строит?
Автор: Rocky 12.2.2010, 19:36
не забыл. допиши в проге вывод значений 3-х мерного массива в файл например.. а потом посмотри его запустив на машине на которой все серое. Мне кажетсячто дело в этом
Автор: registr 12.2.2010, 19:41
Зы под Линуксом работает только в через Creator почему то
Цитата
допиши в проге вывод значений 3-х мерного массива в файл например.. а потом посмотри его запустив на машине на которой все серое.
ок, спасибо, попробую
Но мне теперь непонятно почему у вас вообще на Винде ничего не строит. Таких жалоб еще не было, худо-бедно но строил
Автор: BRE 12.2.2010, 19:43
Сейчас пока лениво разбираться, а под x86_64 тестировали?
Автор: registr 12.2.2010, 19:48
Подумаю методом проб и ошибок, ок, всем спасибо. Массив лучше организую динамически теперь на всякий случай.
Автор: Litkevich Yuriy 12.2.2010, 20:05
Цитата(Rocky @ 12.2.2010, 22:16)
Litkevich Yuriy извини за ссылку на другой форум... Если нельзя удали(
целевую можно, на конкретную тему/сообщение. Но лучше её именовать, см. как я исправил твоё сообщение
Цитата(registr @ 12.2.2010, 22:41)
Зы под Линуксом работает только в через Creator почему то
стало быть нужны какие-то плагины. В окружении Креатора, как правило, все необходимые хахаряшки видны, а без него могут быть не видны.
Автор: registr 13.2.2010, 22:23
Скорее всего проблема была в видеокарте. Заменил glColor3f на glColor4f и на ноуте, где строилась все серым, прога полностью заработала
Предположительно проблема следующая: сначала использую glColor4f, потом glColor3f. На встроенной видеокарте glColor3f игнорируется. Возможно, она сначала прописывает glColor4f и далее пропускает glColor3f.
Цитата
стало быть нужны какие-то плагины. В окружении Креатора, как правило, все необходимые хахаряшки видны, а без него могут быть не видны.
А что это может быть? Типа использование библиотеки OpenGL? И как можно подключить?
Программа строилась на винде ХР, поэтому неизвестно как она будет работать на висте или 7. Думаю, это и объясняет, почему у многих не заработала.
Зы сделал как Rocky советовал
, только вывод в консоль.
Автор: Litkevich Yuriy 13.2.2010, 22:35
Цитата(registr @ 14.2.2010, 1:23)
Типа использование библиотеки OpenGL?
скорее всего. Я другого объяснения не вижу. Коль скоро в окружении Креатора работает, а без него нет.
Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)