Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2008.01.20;
Скачать: [xml.tar.bz2];

Вниз

Потестите эмулятор виртуальных десктопов   Найти похожие ветки 

 
@!!ex ©   (2007-12-11 17:06) [0]

Основной скриншот:
http://img80.imageshack.us/my.php?image=windeskvdmv0.png
Скриншот экрана быстрого переключения десктопов:
http://img80.imageshack.us/img80/7522/windeskvdpreviewpv0.png

http://ifolder.ru/4515084
198 килобайт

Для переключения десктопов с помощью вращающегося куба, нужно нажать Ctrl+Alt+Space и не отпуская Ctrl левой кнопкой мыши вращать куб.
Также десктопы можно переключать через окно выбора десктопа или с помощью меню, появляющегося при клике на иконке программы в трее.

Сорсы в архиве.
Напоролся на косяк с выводом изображения через StretchBlt.
На экране превьюшки видно как ужасно он рисует сжатое изображение.
Может кто знает нормальные спосмобы отрисовать большое изображение(размером с экран) в уменьшенном виде, чтобы оно смотрелось не так ужасно...


 
@!!ex ©   (2007-12-11 17:08) [1]

И, кстати, народ. У кого шейдеры видуха не поддерживает, скажите, плиз, как прога себя ведет?
Если все хорошо, то при выводе изображения цвет будет некорректный(BGR вместо RGB), но все должно работать.


 
@!!ex ©   (2007-12-11 17:27) [2]

Два косяка нашел!
Народ, осторожнее!
Окна которые были на неактивных десктопах при закрытие программы остаються скрытымми... *SORRY*
Ну второй попроще... Окно не TopMost


 
Rouse_ ©   (2007-12-11 17:43) [3]

Работает. А почему CreateDesktop не используешь?


 
@!!ex ©   (2007-12-11 17:43) [4]

> [3] Rouse_ ©   (11.12.07 17:43)

НЕ знаю, что это такое, сейчас почитаю.


 
@!!ex ©   (2007-12-11 17:46) [5]

> [3] Rouse_ ©   (11.12.07 17:43)

Я не понял, что делает эта функция...
Видать не хватает знания английского.


 
Джо ©   (2007-12-11 17:46) [6]

Работает, но медленно.
И пустая иконка в области нотификаций.


 
@!!ex ©   (2007-12-11 17:48) [7]

> Работает, но медленно.

В смысле тормозит? Или десктопы медленно переключает?


> И пустая иконка в области нотификаций.

Да... Не могу найти редактор иконок нормальный.


 
Rouse_ ©   (2007-12-11 17:48) [8]

Хм... CreateDesktop и SwitchDesktop спасут тебя от рутины :) Только там несколько проблем поймаешь, к примеру с заблокированной станцией - будет перекидывать на дефолтный, ну и всякого там по мелочи :)


 
Джо ©   (2007-12-11 17:48) [9]

И куб не всегда выводится поверх всех окон. Вот щас как-раз где-то под окошками IDE болтается. :)


 
Джо ©   (2007-12-11 17:49) [10]

> [7] @!!ex ©   (11.12.07 17:48)
> > Работает, но медленно.
>
> В смысле тормозит? Или десктопы медленно переключает?

С момента нажатия Ctrl-Alt-Space до появления куба проходит несколько секунд.


 
@!!ex ©   (2007-12-11 17:51) [11]


> [8] Rouse_ ©   (11.12.07 17:48)

Скорее добавят проблем. Потому что планирую делать возможность перекидывания окон между десктопами, а рутина основная уже сделана, только отлаживать надо.

> [10] Джо ©   (11.12.07 17:49)

А если переключаться без куба? Через превьюшку или через меню в трее?


 
Джо ©   (2007-12-11 17:53) [12]

> превьюшку или через меню в трее?

Тогда достаточно быстро. В пределах секунды или даже чуть меньше.


 
Virgo_Style ©   (2007-12-11 17:56) [13]

@!!ex ©   (11.12.07 17:08) [1]
У кого шейдеры видуха не поддерживает, скажите, плиз, как прога себя ведет?


Плохо ведет) Не знаю, шейдеры ли тут причиной, но пронаблюдал три разных AV, причем третий, для несообразительных, повторяется по самое не могу.

Адреса:
00000000:00000000 (read)
0045A71B:000000CC (write)
0045A8F9:00000060 (read)


 
@!!ex ©   (2007-12-11 17:58) [14]

> [13] Virgo_Style ©   (11.12.07 17:56)

В какой момент вываливаются?


 
@!!ex ©   (2007-12-11 18:03) [15]

> [12] Джо ©   (11.12.07 17:53)

Странно. Вот что выполняется, при вызове куба:
 Width:=Screen.Width;
 Height:=Screen.Height;
 Left:=0;
 Top:=0;
 ShowWindow(PreviewForm.Handle,SW_HIDE);
 Desktop.Start;
      SaveDesktopImage(CurrentDesktop);

      Animation:=1;
      AnimationProgress:=0;
      LastUpdate:=GetTickCOunt;

      NeedFixAngle:=true;
      NeedFixTilt:=true;

 ShowWindow(Handle,SW_SHOW);
 SetForegroundWindow(Handle);

Жирным выделена развертка Desktop.Start;

А вот это, переключение без куба:
 ShowWindow(PreviewForm.Handle,SW_HIDE);
 SwitchWindow.Desktop.SaveDesktopImage(SwitchWindow.Desktop.CurrentDesktop);
 ShowWindow(PreviewForm.Handle,SW_SHOW);
 SwitchWindow.Desktop.SwitchDesktop(SelectedDesktop);
 InvalidateRect(PreviewForm.Handle,nil,false);
 SetForegroundWindow(PreviewForm.Handle);


Единственная медленная операция в первом куске( SaveDesktopImage(CurrentDesktop);) пристутствует и во втором...


 
boriskb ©   (2007-12-11 18:04) [16]

> [13] Virgo_Style ©   (11.12.07 17:56)


Аналогично.
Материнка у меня правда старая, но лучше бы меня послали "Эта прога не про твое железо", я б не обиделся :)

Я б советовал сначала заняться определением - здесь будет работать, а здесь нет.
А потом уже улучшать.


 
Virgo_Style ©   (2007-12-11 18:05) [17]

@!!ex ©   (11.12.07 17:58) [14]
Запуск - вываливаются по очереди первые два - затем появляется лысое окошко в верхнем левом углу и выпадает третье. После этого сколько на OK не жми - выпадает оно же.


 
@!!ex ©   (2007-12-11 18:05) [18]

> [16] boriskb ©   (11.12.07 18:04)

Для того, чтобы определить где работает, а где нет, нужно чтобы оно сначала хоть где то работало. :)

Когда падает то?


 
@!!ex ©   (2007-12-11 18:06) [19]

> [17] Virgo_Style ©   (11.12.07 18:05)

Ок. Сейчас постараюсь понять в чем косяк.


 
boriskb ©   (2007-12-11 18:08) [20]

> Когда падает то?

так же

> [17] Virgo_Style ©   (11.12.07 18:05)


 
@!!ex ©   (2007-12-11 18:15) [21]

Вот версия, товарищи, попробуйте, плиз, ее запустить.

v0.2 Alpha
ПРи закрытии программы, все окна со всех десктопов объединяются в один десктоп.
Исправлена ошибка с запуском на машинах без поддершки шейдеров.(правда я в этом не на 100% уверен)

http://ifolder.ru/4516178


 
boriskb ©   (2007-12-11 18:23) [22]


> http://ifolder.ru/4516178

Предупредила по человечески.
Запустилась с ужасной графикой и четырмя десктопами (левый верхний угол)
При выборе пустого DT ничего не происходит.
Иконка не видна (пустое место), меню оттуда видно.
Снмается только из таскменеджер-а


 
@!!ex ©   (2007-12-11 18:27) [23]

> Запустилась с ужасной графикой и четырмя десктопами (левый
> верхний угол)

В чем ужас графики проявляется?
Кстати, тормозит? Какая конфигурация?


> При выборе пустого DT ничего не происходит.

А вообще окна есть?
Все окошки должны скрываться, если окошек нет, то не должно происходить ничего(визуально).


> Иконка не видна (пустое место), меню оттуда видно.
> Снмается только из таскменеджер-а

А если в меню Close выбрать?


 
Джо ©   (2007-12-11 18:27) [24]

Не, ошибся. Время задержки примерно одинаковое, хоть из меню переключаться, хоть из кубика.


 
@!!ex ©   (2007-12-11 18:34) [25]

> [24] Джо ©   (11.12.07 18:27)

Есть основания полагать, что это я никак ускорить не могу, тормозит апаратная часть, и без нее не обойтись
, ни превью работать не будет, ни кубик. :(


 
Sapersky   (2007-12-11 18:58) [26]

Напоролся на косяк с выводом изображения через StretchBlt.
На экране превьюшки видно как ужасно он рисует сжатое изображение.


SetStretchBltMode(DC, HALFTONE);

Исправлена ошибка с запуском на машинах без поддершки шейдеров

Вываливается на glCreateProgramObjectARB.
Видео - интегрированная на i915, OpenGL-программы обычно не находят у неё поддержки шейдеров, хотя на самом деле 1.0/1.4 есть (шейдерные демки 3DMark2001 работают).
ExtString:
GL_ARB_DEPTH_TEXTURE GL_ARB_FRAGMENT_PROGRAM GL_ARB_MULTITEXTURE GL_ARB_POINT_PARAMETERS GL_ARB_SHADOW GL_ARB_TEXTURE_BORDER_CLAMP GL_ARB_TEXTURE_COMPRESSION GL_ARB_TEXTURE_CUBE_MAP GL_ARB_TEXTURE_ENV_ADD GL_ARB_TEXTURE_ENV_COMBINE GL_ARB_TEXTURE_ENV_DOT3 GL_ARB_TEXTURE_ENV_CROSSBAR GL_ARB_TRANSPOSE_MATRIX GL_ARB_VERTEX_PROGRAM GL_ARB_WINDOW_POS GL_EXT_ABGR GL_EXT_BGRA GL_EXT_BLEND_COLOR GL_EXT_BLEND_FUNC_SEPARATE GL_EXT_BLEND_MINMAX GL_EXT_BLEND_SUBTRACT GL_EXT_CLIP_VOLUME_HINT GL_EXT_COMPILED_VERTEX_ARRAY GL_EXT_CULL_VERTEX GL_EXT_DRAW_RANGE_ELEMENTS GL_EXT_FOG_COORD GL_EXT_MULTI_DRAW_ARRAYS GL_EXT_PACKED_PIXELS GL_EXT_RESCALE_NORMAL GL_EXT_SECONDARY_COLOR GL_EXT_SEPARATE_SPECULAR_COLOR GL_EXT_STENCIL_WRAP GL_EXT_TEXTURE_COMPRESSION_S3TC GL_EXT_TEXTURE_ENV_ADD GL_EXT_TEXTURE_ENV_COMBINE GL_EXT_TEXTURE_FILTER_ANISOTROPIC GL_EXT_TEXTURE3D GL_3DFX_TEXTURE_COMPRESSION_FXT1 GL_IBM_TEXTURE_MIRRORED_REPEAT GL_NV_BLEND_SQUARE GL_NV_TEXGEN_REFLECTION GL_SGIS_GENERATE_MIPMAP GL_WIN_SWAP_HINT

Я уж не буду спрашивать, зачем нужны шейдеры для рисования куба...


 
@!!ex ©   (2007-12-11 19:03) [27]

> SetStretchBltMode(DC, HALFTONE);

Ок. Спасибо! Как всегда выручаешь. :)

> Вываливается на glCreateProgramObjectARB.

ТОесть шейдеры у тебя опеределились, но компилятся не хочут?

> Я уж не буду спрашивать, зачем нужны шейдеры для рисования
> куба...

шейдер бы посмотрел, уж ты то в нем точно разберешься, :)
просто BitMAp хранит цвет в BGR, соответственно его надо инвертировать, либо при загрузке(а это значит пользователь после нажатия клавиши лишнюю секунду будет медитировать на пустой экран), либо при рисовании(чем шейдер и занимается).


 
@!!ex ©   (2007-12-11 19:06) [28]

> SetStretchBltMode(DC, HALFTONE);

Результат отличный, спасибо!!!


 
@!!ex ©   (2007-12-11 19:12) [29]

> Вываливается на glCreateProgramObjectARB.
> Видео - интегрированная на i915, OpenGL-программы обычно
> не находят у неё поддержки шейдеров, хотя на самом деле
> 1.0/1.4 есть (шейдерные демки 3DMark2001 работают).
> ExtString:
> GL_ARB_DEPTH_TEXTURE GL_ARB_FRAGMENT_PROGRAM GL_ARB_MULTITEXTURE
> GL_ARB_POINT_PARAMETERS GL_ARB_SHADOW GL_ARB_TEXTURE_BORDER_CLAMP
> GL_ARB_TEXTURE_COMPRESSION GL_ARB_TEXTURE_CUBE_MAP GL_ARB_TEXTURE_ENV_ADD
> GL_ARB_TEXTURE_ENV_COMBINE GL_ARB_TEXTURE_ENV_DOT3 GL_ARB_TEXTURE_ENV_CR
> OSSBAR GL_ARB_TRANSPOSE_MATRIX GL_ARB_VERTEX_PROGRAM GL_ARB_WINDOW_POS
> GL_EXT_ABGR GL_EXT_BGRA GL_EXT_BLEND_COLOR GL_EXT_BLEND_FUNC_SEPARATE
> GL_EXT_BLEND_MINMAX GL_EXT_BLEND_SUBTRACT GL_EXT_CLIP_VOLUME_HINT
> GL_EXT_COMPILED_VERTEX_ARRAY GL_EXT_CULL_VERTEX GL_EXT_DRAW_RANGE_ELEMENT
> S GL_EXT_FOG_COORD GL_EXT_MULTI_DRAW_ARRAYS GL_EXT_PACKED_PIXELS
> GL_EXT_RESCALE_NORMAL GL_EXT_SECONDARY_COLOR GL_EXT_SEPARATE_SPECULAR_COL
> OR GL_EXT_STENCIL_WRAP GL_EXT_TEXTURE_COMPRESSION_S3TC GL_EXT_TEXTURE_ENV
> _ADD GL_EXT_TEXTURE_ENV_COMBINE GL_EXT_TEXTURE_FILTER_ANISOTROPIC
> GL_EXT_TEXTURE3D GL_3DFX_TEXTURE_COMPRESSION_FXT1 GL_IBM_TEXTURE_MIRRORED
> _REPEAT GL_NV_BLEND_SQUARE GL_NV_TEXGEN_REFLECTION GL_SGIS_GENERATE_MIPMA
> P GL_WIN_SWAP_HINT


Странно, что падает.
Поддержка шейдеров вроде у тебя есть.
GL_ARB_FRAGMENT_PROGRAM
GL_ARB_VERTEX_PROGRAM
Но падает еще даже до загрузки шейдера, при создании шейдерного объекта...
Значит шейдеры работаю както подругому чтоль?


 
Virgo_Style ©   (2007-12-11 19:20) [30]

Ну... вроде работает. Показывает куб с сюрреалистическими цветами :-) картинки на окошке-"превьюшке" выглядят довольно несимпатично.
Закрывается из меню нормально. Переход на другие десктопы работает.


 
@!!ex ©   (2007-12-11 19:28) [31]

http://ifolder.ru/4517263

v0.21 Alpha
Исправлено отображение десктопов в окне предварительного просмотра.
Исправлена ошибка с запуском на видеокартах с частичной поддержкой шейдеров, но без поддержки GLSL.


 
Sapersky   (2007-12-11 21:05) [32]

просто BitMAp хранит цвет в BGR, соответственно его надо инвертировать, либо при загрузке(а это значит пользователь после нажатия клавиши лишнюю секунду будет медитировать на пустой экран).

Если нужно скопировать экран в текстуру, то, например, в DX7 это можно сделать безо всяких промежуточных битмапов (если текстура того же формата, что и экранный буфер). Аппаратное копирование видео->видео, очень быстро.
Не знаю, как с этим в OGL.

Ещё относительно недавно обсуждался вариант софтверного инвертирования c MMX:
http://delphimaster.net/view/9-1193070314/


 
homm ©   (2007-12-11 21:17) [33]

> [0] @!!ex ©   (11.12.07 17:06)
> http://ifolder.ru/4515084
> 198 килобайт

Выложи на нормальном сервере, хотя бы на народе, а то «На данный момент иностранный трафик у этого файла превышает Российский.».


 
@!!ex ©   (2007-12-11 21:25) [34]

> Аппаратное копирование видео->видео, очень быстро.
> Не знаю, как с этим в OGL.

Мне все равно нужна картинка в битмапе, чтобы превью рисовать.


> Ещё относительно недавно обсуждался вариант софтверного
> инвертирования c MMX:
> http://delphimaster.net/view/9-1193070314/

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


> [33] homm ©   (11.12.07 21:17)
Ты через иностранный прокси чтоль? сорри. выложу попозднее. на народ фигово заливается.. :(


 
Efir   (2007-12-11 21:35) [35]

Не, ну а кто будет контекст OGL при закрытии освобождать? А то утилита видюхи думает что на компе после вечное 3D.


 
@!!ex ©   (2007-12-11 21:38) [36]

> [35] Efir   (11.12.07 21:35)

Кстати, да. Лоханулся...


 
homm ©   (2007-12-11 21:39) [37]

> [34] @!!ex ©   (11.12.07 21:25)
> В любом случае это медленнее, чем совсем без инвертирования,

А напрямую копировать видеопамять в любом случае быстрее, чем получать инвертированное изображение, что-бы отдать его опенжиэлю, что-бы тот его снова синвертировал.


> Ты через иностранный прокси чтоль?

Нет, челябинский провайдер. В прочем поледняя версия таки скачалась.

Зачем в меню 2 пункта «Show Preview/Hide Preview» ? Почему «Preview» имя собственное?


 
@!!ex ©   (2007-12-11 21:41) [38]

> А напрямую копировать видеопамять в любом случае быстрее,
> чем получать инвертированное изображение, что-бы отдать
> его опенжиэлю, что-бы тот его снова синвертировал.



> Мне все равно нужна картинка в битмапе, чтобы превью рисовать.



> Зачем в меню 2 пункта «Show Preview/Hide Preview» ? Почему
> «Preview» имя собственное?

Потому что это пока не та вещь, на которую хочеться отвлекаться чтобы исправить, все равно еще не понятно, как будет в итоге. Мелочь некритичная.


 
Efir   (2007-12-11 21:44) [39]


> Я уж не буду спрашивать, зачем нужны шейдеры для рисования
> куба...


Как зачем, куб же состоит из вершин :)


 
homm ©   (2007-12-11 21:44) [40]

> [38] @!!ex ©   (11.12.07 21:41)
> Мне все равно нужна картинка в битмапе, чтобы превью рисовать.

Здрасти. Зачем тебе картинка в ОП, что-бы вывести превью на окошко?


 
@!!ex ©   (2007-12-11 21:47) [41]

> [40] homm ©   (11.12.07 21:44)

Там же Канвас без OGL. Как мне иначе выводить туда превью?


 
homm ©   (2007-12-11 21:51) [42]

> [41] @!!ex ©   (11.12.07 21:47)

Я не знаю как в ОГЛ, но знаю, что у каждой DD поверхности можно запросить DC, валидный для любых растровых операций.


 
homm ©   (2007-12-11 21:53) [43]

Почему, кстати 4 десктопа? Всем известно, что у куда 6 граней :)


 
@!!ex ©   (2007-12-11 21:59) [44]


> Я не знаю как в ОГЛ, но знаю, что у каждой DD поверхности
> можно запросить DC, валидный для любых растровых операций.

И что это даст?

> [43] homm ©   (11.12.07 21:53)

4 проще всего.


 
homm ©   (2007-12-11 22:01) [45]

> [44] @!!ex ©   (11.12.07 21:59)
> И что это даст?

Как это? А StretchBlt?


 
@!!ex ©   (2007-12-11 22:01) [46]

> [45] homm ©   (11.12.07 22:01)

Что и куда рисовать предлагаешь?


 
antonn ©   (2007-12-11 22:10) [47]

чет я не уловил - а зачем там вообще шейдеры? во времена Half-life с древними картами как то же без них обходились, а тут вывести кубик...


 
homm ©   (2007-12-11 22:15) [48]

> [46] @!!ex ©   (11.12.07 22:01)

Ну блин, в чем проблема? Вывисти скриншот стола на битмап?

var
 BMP: TBitmap;
 DC: HDC;
begin
 Image1.Picture.Bitmap := TBitmap.Create;
 BMP :=   Image1.Picture.Bitmap;
 BMP.Width := Image1.Width;
 BMP.Height := Image1.Height;
 SetStretchBltMode(Image1.Canvas.Handle, HALFTONE);
 DC := GetDC(0);
 StretchBlt(Image1.Canvas.Handle, 0, 0, Image1.Width, Image1.Height, DC, 0, 0, Screen.Width, Screen.Height, SRCCOPY);
 ReleaseDC(0, DC);


Правда работает оно так, что быстрее ОГЛ контекст создать.


 
@!!ex ©   (2007-12-11 22:48) [49]


> [47] antonn ©   (11.12.07 22:10)

И без шейдеров все работает.
Вопрос в цвете. Цвет будет BGR. Это тоже поправимо, за счет CPU. Не вижу причин отказываться от шейдеров. Тем более что они позволяют визуализировать что угодно без лазания в код, да еще к томуже снимают нагрузку с CPU.

> [48] homm ©   (11.12.07 22:15)

Ну у меня так и делается. Я тебя не пойму вообще.
У меня берется скриншот и кладется в BitmAp. Который в последствии выводится в окне Preview.


 
Skyle ©   (2007-12-12 08:40) [50]

У меня всё ограничилось вращением одного монитора как-то..
Два монитора в дуале, вращается только Primary.


 
Skyle ©   (2007-12-12 08:42) [51]

И ещё после выключения как-то произвольным образом изменился порядок кнопок в таскбаре.


 
@!!ex ©   (2007-12-12 09:05) [52]

> [50] Skyle ©   (12.12.07 08:40)

Да. Это известно. У меня также. А как реализовать вращение двух моников? Не проста эта.


> [51] Skyle ©   (12.12.07 08:42)
> произвольным образом изменился порядок кнопок в таскбаре.

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


 
Рамиль ©   (2007-12-12 13:04) [53]

Что то на висте куб какой то некубистый.


 
Рамиль ©   (2007-12-12 13:05) [54]

Сорри, нормальный)
Но иконки в трее нет вообще, только наугад.
А так вроде даже не вылетает.


 
@!!ex ©   (2007-12-12 13:11) [55]

> Но иконки в трее нет вообще, только наугад.

Она есть, но пустая.


> А так вроде даже не вылетает.

А должно?


 
Sapersky   (2007-12-12 14:37) [56]

У меня берется скриншот и кладется в BitmAp. Который в последствии выводится в окне Preview.

И всё-таки почему нельзя рисовать превью через OpenGL? Насчёт контекстов я не в курсе, но наверняка ведь можно как-то извернуться.
Впрочем, это имеет смысл только если есть функция произвольного копирования фрагментов видеопамяти.

Вопрос в цвете. Цвет будет BGR. Это тоже поправимо, за счет CPU. Не вижу причин отказываться от шейдеров.

В качестве возможной альтернативы, в списке расширений интегрированной и Radeon 9000 Pro (который тоже поддерживает шейдеры только 1.x) обнаружил некое GL_EXT_BGRA.
http://www.opengl.org/registry/specs/EXT/bgra.txt
Хотя, судя по фразе "EXT_bgra extends the list of host-memory color formats" это не новый формат текстуры (host-memory - системная память), а просто команда драйверу развернуть компоненты при пересылке, скорее всего софтверно.
Что касается шейдеров, вряд ли OpenGL совсем не умеет работать с 1.x - как тогда Кармак писал движок Doom3 (изначально он был рассчитан на GeForce3, т.е. на 1-е шейдеры)?


 
@!!ex ©   (2007-12-12 14:50) [57]

> И всё-таки почему нельзя рисовать превью через OpenGL? Насчёт
> контекстов я не в курсе, но наверняка ведь можно как-то
> извернуться.
> Впрочем, это имеет смысл только если есть функция произвольного
> копирования фрагментов видеопамяти.

Превьюшку не хочется рисовать через OPenGL. Чтобы она могла работать без использзования видеокарты вообще.


> В качестве возможной альтернативы, в списке расширений интегрированной
> и Radeon 9000 Pro (который тоже поддерживает шейдеры только
> 1.x) обнаружил некое GL_EXT_BGRA.
> http://www.opengl.org/registry/specs/EXT/bgra.txt
> Хотя, судя по фразе "EXT_bgra extends the list of host-memory
> color formats" это не новый формат текстуры (host-memory
> - системная память), а просто команда драйверу развернуть
> компоненты при пересылке, скорее всего софтверно.

Пасиб! Буду копать!


> Что касается шейдеров, вряд ли OpenGL совсем не умеет работать
> с 1.x - как тогда Кармак писал движок Doom3 (изначально
> он был рассчитан на GeForce3, т.е. на 1-е шейдеры)?

Нет нет, не шейдеры, а GLSL.
Можно зафигарить шейдеры на asm"e, и тогда все должно работать.
ВОпрос только в том, что я совсем не умею с такими шейдерами работать.

Кстати, свежу версию запускал?


 
homm ©   (2007-12-12 14:59) [58]

> [57] @!!ex ©   (12.12.07 14:50)
> Чтобы она могла работать без использзования видеокарты вообще.

Ну это фантастика ;)


 
@!!ex ©   (2007-12-12 15:06) [59]

> [58] homm ©   (12.12.07 14:59)

Ну неправильно выразилс, бывает... :)
Но смысл то понятен. :)


 
Anatoly Podgoretsky ©   (2007-12-12 15:33) [60]

> @!!ex  (12.12.2007 15:06:59)  [59]

Просто поторопился.


 
Sapersky   (2007-12-12 16:00) [61]

Можно зафигарить шейдеры на asm"e, и тогда все должно работать.
ВОпрос только в том, что я совсем не умею с такими шейдерами работать.


Примерно так (проверял с микрософтовским компилятором, т.е. на D3D):
ps.1.4 // версия шейдеров
texld r0, t0 // берём цвет из текстуры 0 в регистр r0 (результат)
mov r1, r0  // копируем в r1 (временный регистр)
mov r0.r, r0.b // меняем каналы
mov r0.b, r1.r

Кстати, свежу версию запускал?

Ещё нет, были проблемы со скачиванием. Может, выкладывать исходники отдельным архивом - всё меньше качать.


 
@!!ex ©   (2007-12-12 22:03) [62]

> Примерно так (проверял с микрософтовским компилятором, т.е.
> на D3D):
> ps.1.4 // версия шейдеров
> texld r0, t0 // берём цвет из текстуры 0 в регистр r0 (результат)
>
> mov r1, r0  // копируем в r1 (временный регистр)
> mov r0.r, r0.b // меняем каналы
> mov r0.b, r1.r

нет нет, шейдер на асме я напишу. Я не знаю как с ним работать в плане API.
Как инициализировать и использовать.


 
@!!ex ©   (2007-12-14 11:47) [63]

> обнаружил некое GL_EXT_BGRA.

Отличная вещь, работает даже на GeForce 2 MX. )

И вообще, прога запустилась на p266 + GeForce 2 MX.
Правда слайдшоу. :)


 
homm ©   (2007-12-14 12:01) [64]

> [63] @!!ex ©   (14.12.07 11:47)
> И вообще, прога запустилась на p266 + GeForce 2 MX.
> Правда слайдшоу. :)

А ведь, если подумать, вполне рабочая машинка, для третьего квека, скажем.


 
Anatoly Podgoretsky ©   (2007-12-14 12:05) [65]

> homm  (14.12.2007 12:01:04)  [64]

А в третьем веке были компьютеры?


 
KSergey ©   (2007-12-14 12:07) [66]

> homm ©   (14.12.07 12:01) [64]
> А ведь, если подумать, вполне рабочая машинка, для третьего
> квека, скажем.

Однако - судя по следующим квекам и т.п. - акциями Интела они таки тоже разжились :)


 
Anatoly Podgoretsky ©   (2007-12-14 12:14) [67]

> KSergey  (14.12.2007 12:07:06)  [66]

Так это НЛП


 
antonn ©   (2007-12-14 13:29) [68]


> А в третьем веке были компьютеры?

он про quake :)


 
@!!ex ©   (2007-12-14 14:06) [69]

> [64] homm ©   (14.12.07 12:01)

Ога. Квейк там работал с разрешением 1280/1024, и с 4 такого же размера текстурами? :)


 
@!!ex ©   (2007-12-14 14:06) [70]

Вот, практически релиз. Добавлю только регистрацию и About и все.
Потестите плиз. А я пойду тестить на маленьких разрешения на П266.
http://ifolder.ru/4556763


 
@!!ex ©   (2007-12-14 14:25) [71]

В принципе на низких разрешениях, и если Empty.bmp сделать мелким(сейчас он 800х600, это тоже самое, что текстура 1024х1024) то все равно слайд шоу, но хотя бы время отклика не очень большое, примерно секунда.
Ну а просто переключение через Preview Window и на П266 работает без вопросов.


 
@!!ex ©   (2007-12-14 14:31) [72]

Забыл выложить список изменений:
V0.9
Исправлено вращение куба.
Исправлена синхронизация вращения.
Добавлено обновление текущего десктопа по таймеру.
Добавлена возможность выбора типа рендера(стандартный, BGR, шейдер).
Добавлена возможность настройки окна Preview.
Оптимизирована скорость работы куба.
Добавлена возможность отключения рендера незначащих сторон куба.(для увеличения скорости работы).


 
Virgo_Style ©   (2007-12-14 15:38) [73]

@!!ex ©   (14.12.07 14:31) [72]

А куб все еще вращается как угодно? Я к тому, что на его торцы смотреть вроде как ни к чему. Хотя при желании можно на них "повесить" вызов пользовательских программ, например.


 
@!!ex ©   (2007-12-14 15:43) [74]

> [73] Virgo_Style ©   (14.12.07 15:38)

На торцах всякую инфу сейчас засунул.
В опциях можно отключить рендер торцов. Less faces галочку поставить.


 
Eraser ©   (2007-12-14 15:52) [75]


> Может кто знает нормальные спосмобы отрисовать большое изображение(размером
> с экран) в уменьшенном виде, чтобы оно смотрелось не так
> ужасно...

   SetStretchBltMode(bmp.Canvas.Handle, HALFTONE);
   // The docs say that you should call SetBrushOrgEx after SetStretchBltMode,
   // but not what the arguments should be.
   SetBrushOrgEx(bmp.Canvas.Handle, 0,0, nil);
   StretchBlt(bmp.Canvas.Handle,


 
@!!ex ©   (2007-12-14 15:56) [76]

> [75] Eraser ©   (14.12.07 15:52)

Эм. уже поздно, и давно поздно. :)


 
Gydvin ©   (2007-12-14 16:09) [77]

Окошко предвиема убираться нехочет


 
@!!ex ©   (2007-12-14 16:37) [78]

> [77] Gydvin ©   (14.12.07 16:09)

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


 
Kolan ©   (2007-12-14 18:35) [79]

Так и не понял как пользоваться :(. Какое-то окошко сверху — че сним делать хз.

@!!ex  у трей иконки по праваму клику меню должно выподать обязательно.


 
@!!ex ©   (2007-12-14 18:38) [80]

> Так и не понял как пользоваться :(. Какое-то окошко сверху
> — че сним делать хз.

Десктопы переключать? :))


> @!!ex  у трей иконки по праваму клику меню должно выподать
> обязательно.

Ок.


 
Kolan ©   (2007-12-14 18:42) [81]

> Десктопы переключать? :))

Ну че делать непонятно. Я тыкал на окно тыкакл — что-то происходило(окна мигали вроде) но ниче не менялось.

Кстати, а что будет при запуске n копий? :)


 
Kolan ©   (2007-12-14 18:43) [82]

А куб ка увидеть?


 
Kolan ©   (2007-12-14 18:45) [83]

И как-то Show Previw window ведет себя странно. Нажал Hide — а оно висит себе&#133


 
@!!ex ©   (2007-12-14 18:46) [84]

> Ну че делать непонятно. Я тыкал на окно тыкакл — что-то
> происходило(окна мигали вроде) но ниче не менялось.

Странно... Ты первый у кого такая болезнь возникла...


> Кстати, а что будет при запуске n копий? :)

Куб будет вызываться только для первой копии. А вот переключение через Preview Будет осуществляться для всех копий. Программа будет считать остальные копии обычными окнами.
Контроля количества копий сейчас нет.


> А куб ка увидеть?

Ctrl+Alt+Space нажать и держать. В зависимости от мощности компа, куб может появится как почти мгновенно(на современных), так и через несколько секунд(на п266 секунд 10 ждал).


 
@!!ex ©   (2007-12-14 18:47) [85]

> И как-то Show Previw window ведет себя странно. Нажал Hide
> — а оно висит себе…

Баг. Есть такое. Спасибо!


 
@!!ex ©   (2007-12-14 18:50) [86]

> И как-то Show Previw window ведет себя странно. Нажал Hide
> — а оно висит себе…

Это косяк с прозрачностью... Чего то както оно себя не нормально ведет, если окно прозрачное.
Окно скрывается, но визуально нифига не меняется... окошки не перерисоываются, которые под ним.


 
Kolan ©   (2007-12-14 18:51) [87]

> Ctrl+Alt+Space нажать и держать.

1. Интересно как ты думаешь как я должен был до этой комбинации дойти :) Методом тыка.

2. Тормозит нещядно
Карта mx 440, проц AND 2800+, памяти гиг

3. Предложение:
Ты юзал iPhone? Приятно когда етсь физика, да? Куб надо разрезать крутить, примерно как Google Earth. А так — не похоже на правду.


 
Kolan ©   (2007-12-14 18:53) [88]

А че деск топов не 6?


 
Джо ©   (2007-12-14 18:53) [89]

> [87] Kolan ©   (14.12.07 18:51)
> > Ctrl+Alt+Space нажать и держать.
>
> 1. Интересно как ты думаешь как я должен был до этой комбинации
> дойти :) Методом тыка.

В первом же посте темы написано ;)


 
Kolan ©   (2007-12-14 18:55) [90]

> В первом же посте темы написано ;)

А я подумал что много пропустил и стал снузу читать, пока не нашел ссылку на «почти» релиз. :)


 
@!!ex ©   (2007-12-14 18:55) [91]

> 1. Интересно как ты думаешь как я должен был до этой комбинации
> дойти :) Методом тыка.

Ну вообще то здесь об этом писал.
Вместе с прогой идет текстовый файлик, там написано.


> 2. Тормозит нещядно
> Карта mx 440, проц AND 2800+, памяти гиг

SlideShow?
Сколько памяти у видухи? Если памяти меньше меньше, чем 4*Ширина экрана*Высота экрана*3, то тормозить будет, т.к. текстуры постоянно будут ездить между оперативкой и видеопамяти.
В настройках шейдеры недоступны? если доступны и выбраны, то лучше выбрать второй пункт, где Driver BGR invert.


> Ты юзал iPhone? Приятно когда етсь физика, да? Куб надо
> разрезать крутить, примерно как Google Earth. А так — не
> похоже на правду.

iPhone не юзал.
НЕ понял, что значит куб разрезать...


 
@!!ex ©   (2007-12-14 18:57) [92]

> пока не нашел ссылку на «почти» релиз. :)

С почти релизом я явно погорячился... Есть еще несколько вещей, которых не хватает реально...


 
@!!ex ©   (2007-12-14 18:58) [93]

> 4*Ширина экрана*Высота экрана*3

8*Ширина экрана*Высота экрана*3
забыл учесть остальные "штучки", которые жрут видеопамять.


 
@!!ex ©   (2007-12-14 19:00) [94]

и ширину и высоту экрана при вычислении нужно дополнить до степени двойки.
тоесть разрешение 800х600 считается как текстура 1024х1024


 
sniknik ©   (2007-12-14 19:42) [95]

> Есть еще несколько вещей, которых не хватает реально...
одна из них, нормальная правая кнопка мыши для меню на иконке, левая както "необычно"  чтоли...


 
@!!ex ©   (2007-12-14 19:47) [96]

> [95] sniknik ©   (14.12.07 19:42)

Этот пункт уже исправлен.


 
Gydvin ©   (2007-12-14 23:19) [97]

Кстати програмс интресный. Желаю в том же духе.

> @!!ex ©   (14.12.07 18:57) [92]
> > пока не нашел ссылку на «почти» релиз. :)С почти релизом
> я явно погорячился... Есть еще несколько вещей, которых
> не хватает реально...

канеш поторопился. идея интересная. Развивай...


 
Sapersky   (2007-12-14 23:52) [98]

При нажатии Ctrl-Alt-Space что-то коротко моргает, появляется свёрнутое окно на таскбаре, иконка из трея уплывает... по коду было лень разбираться, но такое ощущение, что со скрытием/показом окон перемудрено...
Ещё gluBuild2DMipmaps очень, очень сильно тормозит, почти 2 секунды выполняется. При этом не видно, чтобы где-то использовался мипмэппинг (хотя с моими познаниями в OGL мог и проглядеть), да он и не нужен в данном случае. Поэтому рекомендую заменить на glTexImage2D - у меня работает почти мгновенно, хотя не было возможности проверить, правильно ли.


 
@!!ex ©   (2007-12-15 09:09) [99]


> glTexImage2D

Только для квадратных текстур.
Хотя я подумаю, может все привести к квадратным и не париться.


 
@!!ex ©   (2007-12-15 09:11) [100]

> При нажатии Ctrl-Alt-Space что-то коротко моргает, появляется
> свёрнутое окно на таскбаре, иконка из трея уплывает... по
> коду было лень разбираться, но такое ощущение, что со скрытием/показом
> окон перемудрено...

Не понял что происходит.
При нажатии Ctrl+Alt+Space окна вообще не трогаются. Снимается скриншот и показывается главное окно приложения.


 
@!!ex ©   (2007-12-15 09:21) [101]

> [98] Sapersky   (14.12.07 23:52)

Вот код, для Ctrl+Alt+Space. Не пойму что происходит у тебя.

 Width:=Screen.Width;
 Height:=Screen.Height;
 Left:=0;
 Top:=0;
 ShowWindow(PreviewForm.Handle,SW_HIDE);

   SaveDesktopImage(CurrentDesktop);//Тупо создание текстуры и ничего больше

   case CurrentDesktop of
     0:Angle:=0;
     1:Angle:=270;
     2:Angle:=180;
     3:Angle:=90;
   end;

   Animation:=1;
   AnimationProgress:=0;
   LastUpdate:=GetTickCOunt;

   NeedFixAngle:=true;
   NeedFixTilt:=true;

 FormStyle:=fsNormal;
 ShowWindow(Handle,SW_SHOW);
 FormStyle:=fsStayOnTop;
 SetForegroundWindow(Handle);


 
Kolan ©   (2007-12-15 10:47) [102]

> НЕ понял, что значит куб разрезать&#133

Разрешить имелось ввиду.


 
@!!ex ©   (2007-12-15 11:49) [103]

> Разрешить имелось ввиду.

Все равно не понима..


 
Kolan ©   (2007-12-15 11:56) [104]

> Все равно не понима&#133

Установи гул землю, открой, и крутани шарик. Вот тоже надо и для кубика сделать.


 
@!!ex ©   (2007-12-15 12:10) [105]

> [104] Kolan ©   (15.12.07 11:56)

Видел я гугль землю. Я не понимаю что нужно сделать...
Ты можешь описать?


 
Kolan ©   (2007-12-15 12:13) [106]

> Ты можешь описать?

Как у тебя работает прокрутка? — Зажал левую кнопку ти такскаешь, так?

А яхочу зажать кнопку, провести и отпустить, как бы крутнуть его, и чтобы он крутился дальше сам с приданной скоростью. То есть физика нужна&#133


 
@!!ex ©   (2007-12-15 12:34) [107]

> [106] Kolan ©   (15.12.07 12:13)

Я так и подумал.
А смысл?

С точки зрения функциональности удобнее быстро крутануть и выбрать нужный...

хотя может сделать функционально..


 
Kolan ©   (2007-12-15 12:37) [108]

Подкрутить — это первое что я пытался сделать. Не пог понять почему не работает. Думал не так кручу.

Дык а че граней не 6?


 
engine ©   (2007-12-15 12:54) [109]

Меню можно было бы русифицировать.
Добавь в настройки пункт — «сменить комбинацию клавиш для переключения между десктопами».
ИМХО не очень удобная комбинация Ctrl+Alt+Space.
Можно еще добавить быстрое переключение между десктопами, что-то вроде:
Ctrl+Alt+1 — десктоп №1
Ctrl+Alt+2 — десктоп №2
&#133

И сделай наконец 6 граней у куба )))


 
engine ©   (2007-12-15 12:56) [110]

Не работает Hide this window


 
Sapersky   (2007-12-15 13:08) [111]

О, пардон, всё работает.
Глюки были, вероятно, из-за того, что я компилировал исходники Delphi5 и кое-что (AlphaBlend и т.п.) закомментировал.
Кстати, мип-мэппинг (и/или анизотропная фильтрация) пригодились бы, а то сейчас текстуры рабочих столов заметно "рябят". Но генерировать мип-уровни 2 секунды - это всё равно перебор, мой код для D3D обрабатывает текстуру 1024 * 1024 за 100 мс.


 
@!!ex ©   (2007-12-15 13:23) [112]

> Меню можно было бы русифицировать.

врядли.


> Добавь в настройки пункт — «сменить комбинацию клавиш для
> переключения между десктопами».
> ИМХО не очень удобная комбинация Ctrl+Alt+Space.

Это будет.


> Можно еще добавить быстрое переключение между десктопами,
> что-то вроде:
> Ctrl+Alt+1 — десктоп №1
> Ctrl+Alt+2 — десктоп №2

Да, это уже делаю.


> И сделай наконец 6 граней у куба )))

Неее. Слишком сильно архитектуру придется менять, существенно сложнее, да и смысла нет.


> Не работает Hide this window

Работает. Если прозрачность не ставить.


> [111] Sapersky   (15.12.07 13:08)
> О, пардон, всё работает.
> Глюки были, вероятно, из-за того, что я компилировал исходники
> Delphi5 и кое-что (AlphaBlend и т.п.) закомментировал.
> Кстати, мип-мэппинг (и/или анизотропная фильтрация) пригодились
> бы, а то сейчас текстуры рабочих столов заметно "рябят".
> Но генерировать мип-уровни 2 секунды - это всё равно перебор,
> мой код для D3D обрабатывает текстуру 1024 * 1024 за 100
> мс.

Я думаю над этим.


 
Kolan ©   (2007-12-15 13:54) [113]

> Неее. Слишком сильно архитектуру придется менять, существенно
> сложнее, да и смысла нет.

Не верю. Какая разница? Где в исходниках место, которое не дает так сделать?


 
@!!ex ©   (2007-12-15 14:32) [114]

> [113] Kolan ©   (15.12.07 13:54)

Места такого нет, но переписывать придется ВЕСЬ код отвечающий за вращение.


 
Kolan ©   (2007-12-15 14:47) [115]

> Места такого нет, но переписывать придется ВЕСЬ код отвечающий
> за вращение.

Мда&#133 Я представлял так:

Есть объекты(деск топы) и ты их рисуешь.


 
@!!ex ©   (2007-12-15 15:35) [116]

> [115] Kolan ©   (15.12.07 14:47)

Ну вот смотри. Есть параллелепипиед.
У него 4 равных стороны - прямоугольники. Которая пропорциональны экрану.
Теперь берем и рисуем 5 сторону.
Во перых она - квадрат. поэтому эффект, когда экран наезжает и отъезжает конкретно для квадрата реализовать значительно сложнее.
К тому же придется исзвращаться с вращением. Придеться переворачивать текстуры, чтобы они всегда были корректно направлены, а то легко возникнет ситуация, когда текстура перевернута на 90-180-270 градусов - это приведет к тому, что во время вращени текстура будет менять свое положение, и это будет визуально видно. Врядли прыгающая текстура обратудет пользователя. Поэтому и рабочих стороны только 4. 4 как раз элементарно реализуются.


 
Kolan ©   (2007-12-15 16:04) [117]

> 90-180-270 градусов

Я считаю ну и пусть, я же его сам так перевернул. Хотя может ты и прав&#133 Только тогда запретить надо видеть верх и низ. То есть врашение только по горизантали.

ЗЫ
 На нормальной видюхе попробовал — прикольно :)



Страницы: 1 2 3 вся ветка

Форум: "Прочее";
Текущий архив: 2008.01.20;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.78 MB
Время: 0.042 c
2-1198223766
ZLynX
2007-12-21 10:56
2008.01.20
переименование Файлов


2-1198159118
kyn66
2007-12-20 16:58
2008.01.20
EditRecord


15-1197964727
Alexey
2007-12-18 10:58
2008.01.20
Программы не запускаются под Win2003. Что делать?


15-1197722276
UI__IU
2007-12-15 15:37
2008.01.20
Слово не понятное...


15-1197530102
zdm
2007-12-13 10:15
2008.01.20
Текстовик





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский