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

Вниз

Вопрос по 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.095 c
2-1138970168
Делфёст
2006-02-03 15:36
2006.02.19
Индикатор выполнения задачи


2-1138628089
Neo Trinitron
2006-01-30 16:34
2006.02.19
Иконки зарегистрированных типов


15-1138106652
Prospect
2006-01-24 15:44
2006.02.19
Дайте рекомендации, плз.


2-1138562878
snoopy
2006-01-29 22:27
2006.02.19
отображение значения real


15-1138154357
Mozart
2006-01-25 04:59
2006.02.19
PHP (с Delphi не связано но здесь же могут быть любые вопросы:) )





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский