Войти
ПрограммированиеФорумОбщее

GLScene GLLCLViewer (2 стр)

Страницы: 1 2
#15
8:58, 6 апр. 2010

Сам точно не знаю что делает код, но я просто его срезал из компоненты и вставил во вьювер, вот сам код
Uses
  Controls, WSLCLClasses, Win32Int,
  Win32WSControls, Win32Proc, LCLMessageGlue;

    TGLSOpenGLControl = class( TWin32WSWinControl)
      published
        class function CreateHandle(const AWinControl: TWinControl;
                                  const AParams: TCreateParams): HWND; override;
    end;
    Procedure GLRegisterWSComponent(aControl: TComponentClass);

function GlWindowProc(Window: HWnd; Msg: UInt; WParam: Windows.WParam;
    LParam: Windows.LParam): LResult; stdcall;
var
  PaintMsg  : TLMPaint;
  winctrl    : TWinControl;
begin
  case Msg of
    WM_ERASEBKGND: begin
      Result:=0;
    end;
    WM_PAINT: begin
      winctrl := GetWin32WindowInfo(Window)^.WinControl;
      if Assigned(winctrl) then begin
        FillChar(PaintMsg, SizeOf(PaintMsg), 0);
        PaintMsg.Msg := LM_PAINT;
        PaintMsg.DC := WParam;
        DeliverMessage(winctrl, PaintMsg);
        Result:=PaintMsg.Result;
      end else
        Result:=WindowProc(Window, Msg, WParam, LParam);
    end;
  else
    Result:=WindowProc(Window, Msg, WParam, LParam);
  end;
end;

class function TGLSOpenGLControl.CreateHandle(const AWinControl: TWinControl;
  const AParams: TCreateParams): HWND;
var
  Params: TCreateWindowExParams;
begin
  // general initialization of Params
  PrepareCreateWindow(AWinControl, AParams, Params);
  // customization of Params
  with Params do begin
    pClassName := @ClsName;
    WindowTitle := StrCaption;
    SubClassWndProc := @GlWindowProc;
  end;
      // create window
  FinishCreateWindow(AWinControl, Params, false);
  Result := Params.Window;
end;

Procedure GLRegisterWSComponent(aControl: TComponentClass);
begin
  RegisterWSComponent(aControl,TGLSOpenGLControl);
end;

По поводу сайта, в основном все тусы проходят сейчас на нашем сайте GLScene.ru а оригинальный ТИПА форум затих.
Там он ваще скоро может закрытся за неуплату(слухи)

Адрес репазитория тот же, не меняется уже 10 лет:
:pserver::/cvsroot/glscene

За последний год подняли поддержку лазаруса (с моей помощью).
Изменили загрузку текстур, теперь они загружаются нааамного быстрее, некоторые форматы загрузки текстур разработаны намного глубже и лучше чем в С++ вариантах(По словам разраба).

Готовимся к переходу на OpenGL3x, Ждем когда DanB закончит чистку с деприкейтед функциями огл, так как они сильно мешают для разработок Сцены под Opengl3х.

Так как баг с вьювером исправлен решил малость поменять архитектуру взаимодействия вьювера с контекстом, ведь у лазаруса кроме возможности кроссплатформа есть еще виджеты, что бы вьювер мог работать под любым виджетом.
Пока в винде на данный момент работает 1 виджет в линусе 2.

На данный момент мне сцена представляется весьма перспективной так как я видел будущие утелиты для работы с материалом и прочее.

Думаю когда Сцена3х будет готова сделаем презентационную демку, но работы еще много.


#16
9:02, 6 апр. 2010

Слушай ты в инете не видел демок с QT и OpenGL причем OpenGL не QTшный а свой а QT использовался бы для от рисовки, тое самое и с GTK?

#17
9:53, 6 апр. 2010

А с какой компоненты ты его срезал? Дело в том что такая же проблема при WS_EX_LAYERED и у нативного Лажарного компонента для вывода OGL.
Демок с QT не видел, причём слышал что в лажарусе поддержка этого виджетсета сильно хромает по сравнению с GTK.

#18
11:15, 6 апр. 2010

TOpenGLControl как раз с него, смотри последний снимок лазаруса.

Страницы: 1 2
ПрограммированиеФорумОбщее

Тема в архиве.