Модераторы: Rickert, Alexeis, BorisVorontsov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с RENDER SELECTION 
:(
    Опции темы
rubenhak
  Дата 10.7.2007, 13:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 146
Регистрация: 17.9.2003
Где: Yerevan

Репутация: нет
Всего: нет



подскажите пожалуста в чем проблемма.
почти всегда количесто хитов  = 0.
вот код:


Код

void SelectObject(int x, int y)
{
  int selectedObjectID = -1;  

  unsigned int selBuffer[512];
  int viewport[4];
  int objectsFound;

  glSelectBuffer ( 512, selBuffer );
  glGetIntegerv  ( GL_VIEWPORT, viewport );

  glRenderMode ( GL_SELECT );

  glInitNames();
  glPushName(0);

  glMatrixMode   ( GL_PROJECTION );
  glPushMatrix();
  glLoadIdentity();


  gluPickMatrix ( (double)x, (double)(viewport[3] - y), 1.0f, 1.0f, viewport );

  gluPerspective(PerspectiveAspectY,PerspectiveAspectX,PerspectiveNear,PerspectiveFar);
  glMatrixMode ( GL_MODELVIEW );
  DrawSelectionObjects();
  glMatrixMode   ( GL_PROJECTION );
  glPopMatrix();
  glMatrixMode ( GL_MODELVIEW );

  objectsFound = glRenderMode ( GL_RENDER );

  if (objectsFound > 0)
  {
            // ....
            // ....
  }

}

void DrawSelectionObjects()
{
  glPolygonMode(GL_FRONT_AND_BACK,GL_FILL);

  glActiveTextureARB(GL_TEXTURE0_ARB);
  glClientActiveTextureARB(GL_TEXTURE0_ARB );
  glDisableClientState(GL_TEXTURE_COORD_ARRAY);
  glDisableClientState(GL_NORMAL_ARRAY);
  glDisableClientState(GL_COLOR_ARRAY);
  glDisable(GL_TEXTURE_2D);


  for(int i = 0 ; i < myMap->meshFaces.size(); i++)
  {
    glLoadName(i);

                // .....................

  }

  glPopName();
}

PM WWW MSN   Вверх
WERITAS
Дата 10.7.2007, 20:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


********
**


Профиль
Группа: Участник
Сообщений: 582
Регистрация: 2.5.2005
Где: Москва

Репутация: нет
Всего: 5



Привет, rubenhak   smile

Вобще-то, для выбора объекта и выделения используется немного другой способ (этот какой-то стремный=) ). Юзай рейкаст (raycast)

Ну или разберись с параметрами функции gluPickMatrix ( (double)x, (double)(viewport[3] - y), 1.0f, 1.0f, viewport );   1.0f - скорее всего маловато будет. Документация по ней тут 


--------------------
Арт-менеджер клуба, разрешивший концерт Алексея Глызина, уволен с формулировкой "Мудак"
PM MAIL   Вверх
rubenhak
Дата 10.7.2007, 23:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 146
Регистрация: 17.9.2003
Где: Yerevan

Репутация: нет
Всего: нет



WERITAS
я видел работающий код с 1.0ф. не знаю как он работает smile

ничего я по другому решил проблему.
PM WWW MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Вы можете найти полезным что...
Alexeis
Rickert
  • Английская документация по DirectX лежит где-то здесь.
  • Английская документация по OpenGL лежит где-то там.
  • Гейм-дев у нас обсуждают где-то тут

Ждём вас! С уважением, Alexeis, Rickert.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Мультимедия, OpenGL/DirectX | Следующая тема »


 




[ Время генерации скрипта: 0.0910 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.