![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вопрос по OpenGL, программа не работает, подскажите, в чем дело! [D7, XP]
Michael5 © (2006-02-04 19:12:00)Пытаюсь научиться рисовать на рабочем столе.
Костафей дал ссылку на книжку-хелп Михаила Краснова (спасибо им обоим, очень нравится), но к ней не приложены примеры. В книге только выдержки из программ, и у меня подозрение, что я чего-то упускаю. Результата работы программ не видно.
procedure TForm1.Button1Click(Sender: TObject);
begin
glLineWidth (33);
glBegin (GL_LINES);
glVertex2f (-1, 1);
glVertex2f (1, -1);
glVertex2f (-1, -1);
glVertex2f (1, 1);
glEnd;
end;
Как я себе представляю, эта программа должна перечеркнуть форму по нажатии баттона... А нету... Подскажите пожалуйста, в чем тут дело?!
Кефир87 (2006-02-04 23:57:00) [1]
> Michael5 (04.02.06 23:30) [16]
>
> А у рабочего стола тоже есть канва?
Ну считай так, если так будет проще 8) Делаешь Canvas.Handle := GetDC(0). И рисуй на нем как обычно.
Michael5 (2006-02-04 23:30:00) [2]А у рабочего стола тоже есть канва? Может, и вариант.
Desdechado (2006-02-04 22:54:00) [3]> ссылка какая-то кривая...
ссылка с переадресацией, нормальная
Кефир87 (2006-02-04 22:43:00) [4]Блин. Нарисовать чтонибудь НЕ используя OpenGL! Канвасом: Canvas.Ellipe и т.д.
Michael5 (2006-02-04 22:03:00) [5]Да не, это масло масляное...
В общем, попробовал - не работает.
А вывод интересует именно на десктоп
Кефир87 (2006-02-04 21:22:00) [6]Никогда не видел эти календари, но видимо их рисуют на десктопе. Но НЕс помощью OpenGL. Для примера, попробуй сделать Canvas.Handle := GetDC(0) и нарисовать на нем что-нибудь. Или на окошке особенном каком-нибудь 8)
Michael5 (2006-02-04 21:13:00) [7]
> Кефир87 © (04.02.06 21:08) [9]
Елки, а как надо-то???!
Хочу сделать вывод на десктоп, программку - в трей. (На экране хочу создавать табличку, но это уже подробности...)
А как тогда это сделать? Как работают настольные календари (по типу rainlendar'а и т.п.)
Ничерта не пойму, подскажи!
Michael5 (2006-02-04 21:09:00) [8]Блин, я уже ИксПрогеру успел написать!!! :))
Придется отписываться...
Спасибо большое!
Кефир87 (2006-02-04 21:08:00) [9]
> Michael5 (04.02.06 20:48) [6]
Я те што сказал?! На десктопе нельзя! Ты когданить такое видел?! OpenGL на рабочем столе гы 8) Одно дело оверлей и то по моему это умеет только DirectDraw.
grouzd[E]v (2006-02-04 21:01:00) [10]А вот и дискета, делов-то (592кб)
http://www.libray.narod.ru/Program/DOpenGL/OpenGL_Samples.rar
---
... we are walking on a thin line and you better avoid the risk ...
grouzd[E]v (2006-02-04 20:54:00) [11]
> В книге только выдержки из программ
Не, там была куча примеров. Спроси XProger'a, у него вроде были с дискетки, я свою посеял где-то =)
---
... we are walking on a thin line and you better avoid the risk ...
Michael5 (2006-02-04 20:48:00) [12]Ой, неправильно! формально правильно было бы так (с точки зрения синтаксиса):
dc:= GetDC (0); // получаю ссылку на рабочий стол
SetDCPixelFormat(dc); //задаем формат пиксела
hrc:= wglCreateContext(dc); // создаем контекст воспроизведения
wglMakeCurrent (dc, hrc); // установить контекст
т.е. беру ссылку на рабочий стол, и использую ее вместо Canvas. Handle.
Тоже не работает...
Michael5 (2006-02-04 20:31:00) [13]Да, понял, ув.Кефир, почитал, чего-то добавил, заработало:
var
dc: HDC;
begin
SetDCPixelFormat(Canvas. Handle); //задаем формат пиксела
hrc:= wglCreateContext(Canvas. Handle); // создаем контекст воспроизведения
dc:= GetDC (0); // получаю ссылку на рабочий стол
wglMakeCurrent (dc, hrc); // установить контекст
//wglMakeCurrent (Canvas. Handle, hrc); // установить контекст
glBegin (GL_LINES);
glVertex2f (-1, 1);
glVertex2f (1, -1);
glVertex2f (-1, -1);
glVertex2f (1, 1);
glEnd;
...
Теперь другое не получается: оригинальную строкуwglMakeCurrent (Canvas. Handle, hrc); // установить контекстя подправил ссылкой на рабочий стол - не работает...
Да, Desdechadо, ссылка какая-то кривая... Но, впрочем, я теперь знаю, что искать!
Кефир87 (2006-02-04 20:18:00) [14]
> Да всю главу перечитал
Какую?! Надо читать с самого начала.
Michael5 (2006-02-04 19:59:00) [15]Да всю главу перечитал, ничего не понял. Про инициализацию не знал. Пример с использованием GDI ведь работает, что меня с толку и сбило.
Спасибо за ссылку!
Desdechado (2006-02-04 19:22:00) [16]http://pmg-ru.narod.ru/russian/nehe/
народный учабник по OpenGL
Кефир87 (2006-02-04 19:18:00) [17]Так ничего и не заработает. Ктож так делает?! А где инициализация?! Учи мат. часть! Читай Краснова!