dglopengl-02------01例子学习
procedure TForm1.FormCreate(Sender: TObject);
begin
DC := GetDC(Handle);//获取句柄
if not InitOpenGL then
Application.Terminate;//如果初始化opengl失败则退出程序
RC := CreateRenderingContext(DC, [opDoubleBuffered], 32, 24, 0, 0, 0, 0);
//function CreateRenderingContext(DC: HDC; Options: TRCOptions; ColorBits, ZBits, StencilBits, AccumBits, AuxBuffers: Integer; Layer: Integer): HGLRC;
//创建渲染环境
ActivateRenderingContext(DC, RC);//激活渲染环境
//其他初始化任务
SetUpGL;
Application.OnIdle:=IdleHandler;
end;
首先是初始化opengl,如果是opengl原始pas的初始化,会写的很长一溜,dglopengl把初始化的代码进行了封装,稍微简洁了很多。
https://docs.microsoft.com/zh-cn/windows/win32/api/winuser/nf-winuser-getdc
GetDC功能
所述的GetDC函数检索句柄用于指定窗口的客户区或整个屏幕的设备上下文(DC)。您可以在后续的GDI函数中使用返回的句柄来绘制DC。设备上下文是一个不透明的数据结构,其值由GDI内部使用。
的GetDCEx函数是一个扩展的GetDC,这给出了一个应用过限幅在客户区如何和是否发生更多的控制。
句法
HDC GetDC(
HWND hWnd
);
参量
hWnd
要获取其DC的窗口的句柄。如果此值为NULL,则GetDC检索整个屏幕的DC。
返回值
如果函数成功,则返回值是指定窗口的客户区DC的句柄。
如果函数失败,则返回值为NULL。
备注
该的GetDC函数检索常见,类或私有DC取决于指定窗口的类样式。对于类和专用DC,GetDC保留先前分配的属性不变。但是,对于常见的DC,GetDC每次检索DC时都会为其分配默认属性。例如,默认字体是System,这是位图字体。因此,GetDC返回的通用DC的句柄不会告诉您绘制窗口时使用了什么字体,颜色或画笔。要确定字体,请调用GetTextFace。
请注意,DC的句柄只能在任何时候由单个线程使用。
用公共DC绘画后,必须调用ReleaseDC函数以释放DC。类别DC和私有DC不必释放。必须从与调用GetDC相同的线程中调用ReleaseDC。DC的数量仅受可用内存的限制。
例子
有关示例,请参见用鼠标绘图。
要求
最低支持的客户 | Windows 2000 Professional [仅桌面应用程序] |
最低支持的服务器 | Windows 2000 Server [仅桌面应用程序] |
目标平台 | 视窗 |
标头 | winuser.h(包括Windows.h) |
图书馆 | User32.lib |
动态链接库 | User32.dll |