Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.02.19;
Скачать: CL | DM;

Вниз

Вопрос по OpenGL, программа не работает, подскажите, в чем дело!   Найти похожие ветки 

 
Michael5   (2006-02-04 19:12) [0]

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

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 19:18) [1]

Так ничего и не заработает. Ктож так делает?! А где инициализация?! Учи мат. часть! Читай Краснова!


 
Desdechado ©   (2006-02-04 19:22) [2]

http://pmg-ru.narod.ru/russian/nehe/
народный учабник по OpenGL


 
Michael5   (2006-02-04 19:59) [3]

Да всю главу перечитал, ничего не понял. Про инициализацию не знал. Пример с использованием GDI ведь работает, что меня с толку и сбило.

Спасибо за ссылку!


 
Кефир87 ©   (2006-02-04 20:18) [4]


> Да всю главу перечитал

Какую?! Надо читать с самого начала.


 
Michael5   (2006-02-04 20:31) [5]

Да, понял, ув.Кефир, почитал, чего-то добавил, заработало:
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о, ссылка какая-то кривая... Но, впрочем, я теперь знаю, что искать!


 
Michael5   (2006-02-04 20:48) [6]

Ой, неправильно! формально правильно было бы так (с точки зрения синтаксиса):
dc:= GetDC (0); // получаю ссылку на рабочий стол
SetDCPixelFormat(dc); //задаем формат пиксела
hrc:= wglCreateContext(dc); // создаем контекст воспроизведения

wglMakeCurrent (dc, hrc); // установить контекст


т.е. беру ссылку на рабочий стол, и использую ее вместо Canvas. Handle.

Тоже не работает...


 
grouzd[E]v ©   (2006-02-04 20:54) [7]


> В книге только выдержки из программ

Не, там была куча примеров. Спроси XProger"a, у него вроде были с дискетки, я свою посеял где-то =)

---
... we are walking on a thin line and you better avoid the risk ...


 
grouzd[E]v ©   (2006-02-04 21:01) [8]

А вот и дискета, делов-то (592кб)
http://www.libray.narod.ru/Program/DOpenGL/OpenGL_Samples.rar

---
... we are walking on a thin line and you better avoid the risk ...


 
Кефир87 ©   (2006-02-04 21:08) [9]


> Michael5   (04.02.06 20:48) [6]

Я те што сказал?! На десктопе нельзя! Ты когданить такое видел?! OpenGL на рабочем столе гы 8) Одно дело оверлей и то по моему это умеет только DirectDraw.


 
Michael5   (2006-02-04 21:09) [10]

Блин, я уже ИксПрогеру успел написать!!! :))
Придется отписываться...

Спасибо большое!


 
Michael5   (2006-02-04 21:13) [11]


> Кефир87 ©   (04.02.06 21:08) [9]

Елки, а как надо-то???!
Хочу сделать вывод на десктоп, программку - в трей. (На экране хочу создавать табличку, но это уже подробности...)

А как тогда это сделать? Как работают настольные календари (по типу rainlendar"а и т.п.)

Ничерта не пойму, подскажи!


 
Кефир87 ©   (2006-02-04 21:22) [12]

Никогда не видел эти календари, но видимо их рисуют на десктопе. Но НЕ с помощью OpenGL. Для примера, попробуй сделать Canvas.Handle := GetDC(0) и нарисовать на нем что-нибудь. Или на окошке особенном каком-нибудь 8)


 
Michael5   (2006-02-04 22:03) [13]

Да не, это масло масляное...
В общем, попробовал - не работает.
А вывод интересует именно на десктоп


 
Кефир87 ©   (2006-02-04 22:43) [14]

Блин. Нарисовать чтонибудь НЕ используя OpenGL! Канвасом: Canvas.Ellipe и т.д.


 
Desdechado ©   (2006-02-04 22:54) [15]

> ссылка какая-то кривая...
ссылка с переадресацией, нормальная


 
Michael5   (2006-02-04 23:30) [16]

А у рабочего стола тоже есть канва? Может, и вариант.


 
Кефир87 ©   (2006-02-04 23:57) [17]


> Michael5   (04.02.06 23:30) [16]
>
> А у рабочего стола тоже есть канва?

Ну считай так, если так будет проще 8) Делаешь Canvas.Handle := GetDC(0). И рисуй на нем как обычно.



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

Текущий архив: 2006.02.19;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.062 c
8-1126357005
Tomek
2005-09-10 16:56
2006.02.19
Режим наложения графики функцией BitBlt


1-1137495143
TAHAT
2006-01-17 13:52
2006.02.19
Запуск исполняемого файла без сохранения на диск


2-1138598268
RUBEY
2006-01-30 08:17
2006.02.19
Передача значений в форму


10-1114066988
Der Schlangen
2005-04-21 11:03
2006.02.19
Композитный ActiveX компонент как создать?


2-1139080529
ПОМОГИТЕ
2006-02-04 22:15
2006.02.19
нету темы