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

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

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.10.2009, 10:32   #1
elpilasgsm
Пользователь
 
Регистрация: 30.03.2009
Сообщений: 20
По умолчанию

тут вопрос один возник. Хочу сделать , чтобы в форме BulderA создалось окно с опенГЛ. Но не на всю форму, а такк, что бы место для кпопок осталось + чтобы управление объектами в ОПЕнГЛ окне могло уравляться кнопками Билдера. Не знаю как это реализовать. если можно пришлите чуть кода. Спасибо

Последний раз редактировалось Stilet; 26.10.2009 в 12:40.
elpilasgsm вне форума Ответить с цитированием
Старый 26.10.2009, 12:07   #2
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,742
По умолчанию

вы поняли, что вы написали?
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 26.10.2009, 22:50   #3
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
Лампочка

С билдером не работал, да и к изучению OpenGL всё ещё никак не приступлю (времени нету ), но разве в самом начале не делается что-то подобного?:
Код:
DC:=GetDC(Form1.Handle);
RC:=CreateRenderingContext(DC, [opDoubleBuffered], 32, 24, 0, 0, 0, 0);
ActivateRenderingContext(DC, RC);
Так может просто изменить первую строчку достаточно будет?)
Код:
DC:=GetDC(Form1.Panel1.Handle);
I am the First of Cyber Evolution...
I am the First to Program your Future...
DomiNick вне форума Ответить с цитированием
Старый 27.10.2009, 10:26   #4
elpilasgsm
Пользователь
 
Регистрация: 30.03.2009
Сообщений: 20
По умолчанию

Цитата:
Сообщение от raxp Посмотреть сообщение
вы поняли, что вы написали?
Я понял. Может написал не совсем корректно. Я хочу просто разобраться как работают все графические пакеты, банально AutoCAD (я знаю, что он не совсем банальный ))))), но все же. Там я жму на кнопку и в зависимости от этого могу производить действия в рабочем окне. Может там и не ОПЕНГЛ, я не знаю.. Если я пишу бред, то скажите мне об этом... Я и спрашиваю, т.к. не знаю))
elpilasgsm вне форума Ответить с цитированием
Старый 27.10.2009, 10:49   #5
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,742
По умолчанию

дополню DomiNick в части
Цитата:
чтобы управление объектами в ОПЕнГЛ окне могло уравляться кнопками
для обработки клавиш и мыши добавьте в private
Код:
procedure WMKeyUp(var msg:TWMKeyUp);message WM_KEYUP;
    procedure WMKeyDown(var msg:TWMKeyDown);message WM_KEYDOWN;
    procedure WMMouseWheel(var msg:TWMMouseWheel);message WM_MOUSEWHEEL;
    procedure WMMouseMove(var msg:TWMMouseMove);message WM_MouseMove;
    procedure WMMouseRDown(var msg:TWMLButtonDown);message WM_RButtonDown;
    procedure WMMouseRUp(var msg:TWMLButtonDown);message WM_RButtonUp;
    procedure WMMouseLUp(var msg:TWMLButtonUp);message WM_LButtonUp;
    procedure WMMouseLDown(var msg:TWMLButtonDown);message WM_LButtonDown;
пример...
Код:
procedure Tpgl.WMKeyUp(var msg: TWMKeyUp);
begin
 inherited;
 //для примера-
 if msg.CharCode= 17 then ;   // отжали CTR-
 if msg.CharCode= 16 then ;  // отжали SHIFT-

 if msg.CharCode= 37 then ; // left 
 if msg.CharCode= 39 then ; // reight
 if msg.CharCode= 38 then ; // up
 if msg.CharCode= 40 then ; // down
end;
procedure Tpgl.WMKeyDown(var msg: TWMKeyDown);
begin
 inherited;
 // с клавишами аналогично
 // paintPlace3d -прорисовка
 InvalidateRect(Handle, nil, False)
end;

procedure Tpgl.WMMouseRDown(var mSg: TWMLButtonDown);
begin
 inherited;
 //аналогично 
end;
procedure Tpgl.WMMouseRup(var mSg: TWMLButtonDown);
begin
 inherited;
 //аналогично
end;
зы, на дельфи, но перевести синтаксис думаю проблем не составит
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 27.10.2009, 20:59   #6
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
По умолчанию

А для того чтоб окно растягивалось нормально, я находил (не помню где) вот такую процедуру:
Код:
Procedure TForm1.FormResize(Sender: TObject);
Var a: Integer;
Begin
glPushMatrix;
a:=Abs(Panel1.Width-Panel1.Height) Div 2;
If Panel1.Width>Panel1.Height Then
      glViewport(a+xPos, 0+yPos, Panel1.Height, Panel1.Height)
Else
      glViewport(0+xPos, a+yPos, Panel1.Width, Panel1.Width);
glPopMatrix;
End;
I am the First of Cyber Evolution...
I am the First to Program your Future...
DomiNick вне форума Ответить с цитированием
Старый 27.10.2009, 21:37   #7
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,742
По умолчанию

а прорисовку объектов в onpaint для ускорения делайте через вызов glcalllist (opengl заранее буфер просчитает)
Код:
const grid=1;
        объекты=2,3,...

procedure Tpgl.WMPaint(var Msg: TWMPaint);
var ps: TPaintStruct;
begin
 //DoCalculateFPS;
 //
 BeginPaint(Handle, ps);
 if DC=0 then CreateDC;
 glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);

   setviewGRID(FViewGRID);
   
 SwapBuffers(DC);
 EndPaint(Handle, ps)
end;

procedure Tpgl.SetViewTIK(const Value: Boolean);
begin
 FViewGRID:= Value;
 if value then glCallList(GRID)
end;
//создание объекта
Код:
procedure tpgl.paintGrid;
var r: GLfloat;
    i,n,k: integer;
begin
 glNewList(Grid, GL_Compile);
  //тут делает объект или набор объектов
 glendlist
end;
когда дойдете до выбора объектов, если у вас он будет, отпишите...
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 02.11.2009, 09:26   #8
elpilasgsm
Пользователь
 
Регистрация: 30.03.2009
Сообщений: 20
По умолчанию

спасибо за инфу. думАю поможет...
elpilasgsm вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
GLScene & C++ builder 6 Black-Sparkle Общие вопросы C/C++ 1 03.12.2012 12:35
TForm & TImage & PNG & Прозрачность delphi_beginner Общие вопросы Delphi 7 19.09.2009 08:46
Просто не понимаю б чём проблема!!!!!!!(char* && index) artush1984 Общие вопросы C/C++ 12 30.05.2009 03:30
Распределенные вычисления.Turbo Delphi & OpenGl Scabby Фриланс 1 12.05.2009 19:37
MS Word & C++ Builder 6 Assassin C++ Builder 1 24.05.2008 15:21