Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: OpenGL и Qt4
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Система рисования. Печать
registr
Опять про OpenGL. Написал приложение на Qt 4.3.0, которое у меня выполняется корректно, а на некоторых компах некорректно. Суть программы в том, что по высоте над поверхностью она дает цвет точке данной высоты.

Такое ощущение, что не работает функция C_fun (см. исходник). На компе, где компилировал, работает как надо, на некоторых (но не на всех) работает некорректно (фигура строится полностью серым цветом).

1) Корректно или нет запускается у вас мое приложение?

2) Какие советы и предложения, чтобы исправить данный дефект??? :blink:

ссылка для скачивания
Rocky
у меня не запустилась, требует 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
dll скачай здесь

Компилирую через обычное кьютеховское консольное меню стандартным образом:
qmake -project
в файл-проект добавляю QT += opengl
qmake
make

Вопрос собственно в другом, почему на разных машинах приложение работает с переменным успехом. Думал раньше, что видеокарта тут причем. Теперь так не думаю. Как будто скомпилированный код понимается по разному, когда функция C_fun не выполняется и ставится заранее установленный цвет -- серый.

??? :blink:
Litkevich Yuriy
Цитата(Rocky @ 12.2.2010, 20:54) *
А что вот это может компилироваться?
а что именно не компилируется. на какую строчку кода ругается?
Rocky
Ну как бы либо я отстал... но вот так никогда нельзя было делать:
int z = 5;
double x[z];


либо #define z 5
либо const int z = 5;

Потому что компилятор должен знать заранее сколько памяти выделять под статический (!) массив. Это же не динамический... так можно вообще так делать

int z = 0;
cin << z;
int x[z];

Чето странное либо я сильно туплю в конце недели )

Зы.
1) Запустилось
2) Цвет верхней точки красный (даже не ораженвый как у рядом стоящих (или лежащих?) точек)
registr
Цитата(Rocky @ 12.2.2010, 18:38) *
Зы.
1) Запустилось
2) Цвет верхней точки красный (даже не ораженвый как у рядом стоящих (или лежащих?) точек)

Можно крутить мышью )

Фишка в том, что у кого то запускается правильно, у кого то неправильно. Я не могу разобраться почему. Help.
BRE
Цитата(Rocky @ 12.2.2010, 18:38) *
Потому что компилятор должен знать заранее сколько памяти выделять под статический (!) массив. Это же не динамический... так можно вообще так делать

int z = 0;
cin << z;
int x[z];

Чето странное либо я сильно туплю в конце недели )

Это расширение gcc: возможность создания массивов переменной длины на стеке.
DEADHUNT
Цитата(BRE @ 12.2.2010, 18:58) *
Это расширение gcc: возможность создания массивов переменной длины на стеке.

это не расширение, а variable length array из стандарта C99.
BRE
Цитата(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-Extens...ml#C-Extensions
Подраздел:
Variable Length: Arrays whose length is computed at run time.
Rocky
Litkevich Yuriy извини за ссылку на другой форум... Если нельзя удали(

registr
Спросил у старших товарищей, посмотри, может в это дело.
Можно ли задавать статич. массиву размер через дин. переменную?
Я про вывод. Посмотри, реально ли там те значения, которые ты кладешь

в любом случае nmake такое не понимает )
registr
BRE
DEADHUNT
Litkevich Yuriy

Хотелось бы узнать работает ли?
DEADHUNT
Цитата(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
Цитата(registr @ 12.2.2010, 19:17) *
Хотелось бы узнать работает ли?

У меня белое окно.... Двигал мышкой, жал не стрелки и пробел, ничего не изменяется. :)

Цитата(DEADHUNT @ 12.2.2010, 19:21) *
gcc здесь не причем. стандарт не пробовал смотреть

Если я не ошибаюсь, то в gcc это было в расширениях еще до принятия C99.
Вот там я про это и прочитал, если это есть и в стандарте, ну что же ... хорошо.
Rocky
в винде работает, под лиуксом - тоже белое окно с крестом )
registr
Цитата(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) *
в винде работает, под лиуксом - тоже белое окно с крестом )

А он что не строит рельеф??? :blink: Я что забыл вложить файл CrearMap.map? :blink: Должно происходить построение рельефа :blink:

с exe-шником должен лежать файл CrearMap.map, оттуда прога загружает чистую карту и накладывает на нее рельеф с градиентом цвета. Прога и рельеф не строит? :blink:
Rocky
не забыл. допиши в проге вывод значений 3-х мерного массива в файл например.. а потом посмотри его запустив на машине на которой все серое. Мне кажетсячто дело в этом
registr
Зы под Линуксом работает только в через Creator почему то :blink:

Цитата
допиши в проге вывод значений 3-х мерного массива в файл например.. а потом посмотри его запустив на машине на которой все серое.
ок, спасибо, попробую :)

Но мне теперь непонятно почему у вас вообще на Винде ничего не строит. Таких жалоб еще не было, худо-бедно но строил :blink:
BRE
Сейчас пока лениво разбираться, а под x86_64 тестировали?
registr
Подумаю методом проб и ошибок, ок, всем спасибо. Массив лучше организую динамически теперь :) на всякий случай.
Litkevich Yuriy
Цитата(Rocky @ 12.2.2010, 22:16) *
Litkevich Yuriy извини за ссылку на другой форум... Если нельзя удали(
целевую можно, на конкретную тему/сообщение. Но лучше её именовать, см. как я исправил твоё сообщение

Цитата(registr @ 12.2.2010, 22:41) *
Зы под Линуксом работает только в через Creator почему то
стало быть нужны какие-то плагины. В окружении Креатора, как правило, все необходимые хахаряшки видны, а без него могут быть не видны.
registr
Скорее всего проблема была в видеокарте. Заменил glColor3f на glColor4f и на ноуте, где строилась все серым, прога полностью заработала :)

Предположительно проблема следующая: сначала использую glColor4f, потом glColor3f. На встроенной видеокарте glColor3f игнорируется. Возможно, она сначала прописывает glColor4f и далее пропускает glColor3f.

Цитата
стало быть нужны какие-то плагины. В окружении Креатора, как правило, все необходимые хахаряшки видны, а без него могут быть не видны.
А что это может быть? Типа использование библиотеки OpenGL? И как можно подключить?

Программа строилась на винде ХР, поэтому неизвестно как она будет работать на висте или 7. Думаю, это и объясняет, почему у многих не заработала.

Зы сделал как Rocky советовал :) , только вывод в консоль.
Litkevich Yuriy
Цитата(registr @ 14.2.2010, 1:23) *
Типа использование библиотеки OpenGL?
скорее всего. Я другого объяснения не вижу. Коль скоро в окружении Креатора работает, а без него нет.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.