Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.12.2009, 17:56   #1
Seran4ek
Пользователь
 
Регистрация: 14.10.2009
Сообщений: 94
По умолчанию glViewport и его параметры

Добрый вечер. не могу понять, в чом проблема.
у меня есть таймер и по событию OnTimer вызывается процедура FormResize, где указан glViewport.
Код:
glViewport( 0, 0, ClientWidth-200, ClientHeight);
Вся отрисовка выполняется по FormPaint.
но почему обновляется ПОЛНОСТЬЮ вся форма, а не та часть, которую я указал в ВьюПорт?

зЫ:
текст процедуры Ресайз
Код:
procedure TForm1.FormResize(Sender: TObject);
begin
 glViewport( 0, 0, ClientWidth-200, ClientHeight);
 glMatrixMode( GL_PROJECTION );
 glLoadIdentity();
 glOrtho(-14,14, -14,14, 0,30);
 gluLookAt( 6,5,9, 0,0,0, 0,1,0);
 glMatrixMode( GL_MODELVIEW );
 InvalidateRect(Handle, nil, False);
end;
Seran4ek вне форума Ответить с цитированием
Старый 28.12.2009, 18:12   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

GL тут не причем.

скажите честно, вы читали справку по функции InvalidateRect?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 28.12.2009, 18:18   #3
Seran4ek
Пользователь
 
Регистрация: 14.10.2009
Сообщений: 94
По умолчанию

ну знаю что за прорисовку экрана помоему отвечает..а так не усугублялся.
не могу найти ничего путного по его параметрам..Т_Т
Seran4ek вне форума Ответить с цитированием
Старый 28.12.2009, 18:26   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
lpRect

Points to a RECT structure that contains the client coordinates of the rectangle to be added to the update region. If this parameter is NULL, the entire client area is added to the update region.
там ставите структуру Rect(точнее переменную этого типа)
а в ней заполняете область что надо обновить.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 28.12.2009, 18:30   #5
Seran4ek
Пользователь
 
Регистрация: 14.10.2009
Сообщений: 94
По умолчанию

принцип понял, а как реализовать не очень
не могли бы вы мне для примера эту функцию написать, пожалуйста?)
Seran4ek вне форума Ответить с цитированием
Старый 28.12.2009, 18:37   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Код:
var R:Rect;
begin
//-----
R.Left:=0;
R.Top:=0;
R.Bottom:=ClientHeight;
R.Right:=ClientWidth-200;
InvalidateRect(Handle,R,False);
вроде так
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 28.12.2009, 18:51   #7
Seran4ek
Пользователь
 
Регистрация: 14.10.2009
Сообщений: 94
По умолчанию

а Rect мне в виде чего описать? такого типа ж вроде нету
Seran4ek вне форума Ответить с цитированием
Старый 28.12.2009, 18:55   #8
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

а вы пробывали?
Цитата:
такого типа ж вроде нету
видно что нет...

он или Rect или TRect
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 28.12.2009, 19:00   #9
Seran4ek
Пользователь
 
Регистрация: 14.10.2009
Сообщений: 94
По умолчанию

пробывал!
написал TRect, он принял, но пишет что несовместимые типы TRect и PRect.
тогда я написал PRect. но теперь он при запуске выкидывает ошибку "адресс виолейшн и тд и тп"
а внизу "[Warning] Unit1.pas(146): Variable 'R' might not have been initialized"
Код:
procedure TForm1.FormResize(Sender: TObject);
var R:PRect;
begin
 glViewport( 0, 0, ClientWidth-200, ClientHeight);
 glMatrixMode( GL_PROJECTION );
 glLoadIdentity();
 glOrtho(-14,14, -14,14, 0,30);
 gluLookAt( 6,5,9, 0,0,0, 0,1,0);
 glMatrixMode( GL_MODELVIEW );
 R.Left:=10;
 R.Top:=20;
 R.Bottom:=ClientHeight;
 R.Right:=ClientWidth-200;
 InvalidateRect(Handle, R, False);
end;
Seran4ek вне форума Ответить с цитированием
Старый 28.12.2009, 21:59   #10
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Код:
var R:TRect;
begin
//-----
R.Left:=0;
R.Top:=0;
R.Bottom:=ClientHeight;
R.Right:=ClientWidth-200;
InvalidateRect(Handle,@R,False);
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
неубиваемый вирус! все антивирусы не находят его! кто знает как его убрать? Yury111 Безопасность, Шифрование 12 05.06.2009 11:19
Twebbrowser - его параметры Venom Общие вопросы Delphi 6 09.05.2009 21:11
Параметры danielsteiner Общие вопросы C/C++ 1 12.04.2009 20:47
msiexec - параметры ERASERROR Софт 0 21.02.2008 14:38
объясните пжалуйста что эт такое.....classid....и его параметры плиз очень срочно н. _Solomon_ HTML и CSS 0 14.02.2007 08:26