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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ChangeDisplaySettings 8 бит не получаеться 
:(
    Опции темы
dandy77
Дата 8.10.2008, 19:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Пишу на Win API + OpenGL.
Есть код изменения разрешения дисплея и количества бит для цвета:
Код

DEVMODE dmScreenSettings;                        // Device Mode
      memset(&dmScreenSettings,0,sizeof(dmScreenSettings));   // Makes Sure Memory's Cleared
      dmScreenSettings.dmSize=sizeof(dmScreenSettings);      // Size Of The Devmode Structure
      dmScreenSettings.dmPelsWidth   = width;            // Selected Screen Width
      dmScreenSettings.dmPelsHeight   = height;            // Selected Screen Height
      dmScreenSettings.dmBitsPerPel   = bits;               // Selected Bits Per Pixel
      dmScreenSettings.dmFields=DM_BITSPERPEL|DM_PELSWIDTH|DM_PELSHEIGHT;
      

      // Try To Set Selected Mode And Get Results.  NOTE: CDS_FULLSCREEN Gets Rid Of Start Bar.
      if (ChangeDisplaySettings(&dmScreenSettings,CDS_FULLSCREEN)!=DISP_CHANGE_SUCCESSFUL)
      {
                           .............................

Так же количество бит для цвета применяеться:
Код

static   PIXELFORMATDESCRIPTOR pfd=            // pfd Tells Windows How We Want Things To Be
   {
      sizeof(PIXELFORMATDESCRIPTOR),
      1,            
      PFD_DRAW_TO_WINDOW |   
      PFD_SUPPORT_OPENGL |      
      PFD_DOUBLEBUFFER,      
      PFD_TYPE_RGBA,      
      bits,            
      0, 0, 0, 0, 0, 0,         
      0,            
      0,            
      0,            
      0, 0, 0, 0,         
      16,            
      0,            
      0,            
      PFD_MAIN_PLANE,      
      0,            
      0, 0, 0            
   };

Когда меняю bits на значение 8 разрядов для цвета (было 16), то изображение начинает томозить, и вобще выводиться очень страшным (черный фон, какие- то белые точки которые отображают очертания тестур). Почему на 8 бит цвета тормозит и не выводиться как надо?
PM MAIL   Вверх
Rickert
Дата 9.10.2008, 05:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

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



dandy77, либо проблемы с видяхой, либо OGL запускает внутренние механизмы преобразования. Сказать честно никогда такимн е маялся, так с кондачка не скажешь. Надо разбирать устройство OGL.


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
dandy77
Дата 9.10.2008, 09:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Rickert, ты не скажешь что значит "OGL запускает внутренние механизмы преобразования"? У меня кстати тот же эфект наблюдаеться и при 16 бит цветов при переносе программ на другой компьютер. На моем идут нормально, а других тормозят, и по мощьности вроде моему не уступают. Скажи может какой код показать, я покажу.
PM MAIL   Вверх
Rickert
Дата 9.10.2008, 10:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

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



Попробуй сначала поменять только параметры дисплея, не меняя параметров пикселя для OGL (оставь их 32 или 24).

Это сообщение отредактировал(а) Rickert - 9.10.2008, 10:15


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
dandy77
Дата 9.10.2008, 11:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Значит так. Меняю bits с 16 на 8:
Код

DEVMODE dmScreenSettings;                
        memset(&dmScreenSettings,0,sizeof(dmScreenSettings));    
        dmScreenSettings.dmSize=sizeof(dmScreenSettings);    
        dmScreenSettings.dmPelsWidth    = width;        
        dmScreenSettings.dmPelsHeight    = height;        
        dmScreenSettings.dmBitsPerPel    = bits;            
        dmScreenSettings.dmFields=DM_BITSPERPEL|DM_PELSWIDTH|DM_PELSHEIGHT;
        

        // Try To Set Selected Mode And Get Results.  NOTE: CDS_FULLSCREEN Gets Rid Of Start Bar.
        if (ChangeDisplaySettings(&dmScreenSettings,CDS_FULLSCREEN)!=DISP_CHANGE_SUCCESSFUL)

на 16 работает на 8 глючит, причем не меняю:
Код

static    PIXELFORMATDESCRIPTOR pfd=            
    {
        sizeof(PIXELFORMATDESCRIPTOR),        
        1,                        
        PFD_DRAW_TO_WINDOW |            
        PFD_SUPPORT_OPENGL |            
        PFD_DOUBLEBUFFER,                
        PFD_TYPE_RGBA,                
        8,                        //тут было 8 при 16 и при 8 в ChangeDisplaySettings
        0, 0, 0, 0, 0, 0,                    
        0,                        
        0,                        
        0,                        
        0, 0, 0, 0,                    
        8,                        //и тут было 8 при 16 и при 8 в ChangeDisplaySettings
        0,                        
        0,                        
        PFD_MAIN_PLANE,                
        0,                        
        0, 0, 0                        
    };

Как я уже говорил при таких параметрах pfd- на 16 в ChangeDisplaySettings не глючит, на 8-ми битах глючит. Причем пробывал вручную поменять разрешение 640 на 480 при 8 битах (через "Свойства- Экран" на рабочем столе)- разрешение меняеться нормально. А программно не хочет.
PM MAIL   Вверх
Rickert
Дата 9.10.2008, 11:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

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



Значит что-то не верно указываете в параметрах при смене свойств экрана. Гулим, думаем.


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
dandy77
Дата 9.10.2008, 11:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Так а что может быть не правильно? Все же просто- задаешь разрешение, количество бит. Не знаю... У меня кстати то же самое с 8-ми битами цвета и на других компьютерах. При 16,24 работают, при 8 не хотят, тоже тормозит, все черное в точках.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Вы можете найти полезным что...
Alexeis
Rickert
  • Английская документация по DirectX лежит где-то здесь.
  • Английская документация по OpenGL лежит где-то там.
  • Гейм-дев у нас обсуждают где-то тут

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

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


 




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


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

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