如何在Win32(C ++)静态控件中正确渲染OpenGL?

马特·B

我正在尝试让OpenGL在Win32 api静态控件中进行渲染。我已经遍历了Nehe的教程(http://nehe.gamedev.net/tutorial/creating_an_opengl_window_%28win32%29/13001/),如何强制openGl渲染到整个窗口。我知道该怎么做,但是我不确定如何在静态控件(或任何控件)中进行渲染。目前,我正在尝试这样做:

HDC         hDC = NULL;
HGLRC       hRC = NULL; 
HWND        hWnd = NULL; 
HWND        panel;
HINSTANCE   hInstance;  
void CreatePanelGL(HWND hWnd){
    panel = CreateWindowEx(
    WS_EX_CLIENTEDGE,
    "STATIC",
    "",
    WS_CHILDWINDOW | WS_VISIBLE | CS_OWNDC | CS_VREDRAW | CS_HREDRAW,
    30, 30, 100, 100,
    hWnd,
    (HMENU)BUTTON_ID,
    GetModuleHandle(NULL),
    NULL);

    hDC = GetDC(panel);
    PIXELFORMATDESCRIPTOR pfd = { 0 };
    pfd.nSize = sizeof(PIXELFORMATDESCRIPTOR);
    pfd.nVersion = 1;
    pfd.dwFlags = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER;
    pfd.iPixelType = PFD_TYPE_RGBA;
    pfd.cColorBits = 32;
    pfd.cDepthBits = 16;
    pfd.cStencilBits = 8;

    SetPixelFormat(hDC, 1, &pfd);
    hRC = wglCreateContext(hDC);
    wglMakeCurrent(hDC, hRC);
}
LRESULT CALLBACK WndProc(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam){
switch(uMsg){
   case WM_CREATE:{
      CreatePanelGL(hWnd);
      break;
   }}
return DefWindowProc(hWnd, uMsg, wParam, lParam);
}

我有比这更多的代码,但我认为这是唯一重要的部分。如果您希望我发布更多信息,请告诉我。回调函数减少了很多,CreatePanelGL()函数是完整的复制和粘贴。该代码几乎是Nehe代码的重大修改版本。虽然这不会引发任何错误,但openGl并未在面板内部呈现清晰的颜色。谁能帮我吗?我确定我至少做错了一百件事。

不可屏蔽中断

Static control有自己的绘图操作,可能会使事情搞砸。而是创建一个自定义子窗口。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Win32(C ++)静态控件中正确渲染OpenGL?

来自分类Dev

如何在ActiveX控件中正确初始化OpenGL?

来自分类Dev

如何在Win32中正确调用HeapSummary API?

来自分类Dev

如何在OpenGL 3.1中正确渲染为纹理

来自分类Dev

如何在OpenGL中正确正交渲染纹理?

来自分类Dev

C ++ Win32静态控件透明背景

来自分类Dev

Win32 API:如何在Edit控件中捕获转义键?

来自分类Dev

Win32 API:如何在编辑控件中更改部分文本的颜色

来自分类Dev

Win32 API:如何在Edit控件中捕获转义键?

来自分类Dev

如何在不显示文本的情况下分配Win32 EDIT控件的窗口名称?

来自分类Dev

Win32 API:如何在编辑控件中更改部分文本的颜色

来自分类Dev

如何在Gui win32编程中使用静态标签和按钮

来自分类Dev

如何正确处理Win32 GUI消息循环?

来自分类Dev

正确使用Win32线程

来自分类Dev

如何找到Win32控件/窗口相对于其父窗口的位置?

来自分类Dev

如何使在没有 WS_VISIBLE 的情况下创建的 Win32 控件可见?

来自分类Dev

如何在OnNavigatedTo中正确设置CheckBox控件的状态

来自分类Dev

如何正确地将Win32类对象传递给函数

来自分类Dev

如何使用Win32或MFC获得Windows系统的正确关机时间

来自分类Dev

如何在libGDX中正确渲染泰式字体?

来自分类Dev

如何在Flow中正确键入渲染道具?

来自分类Dev

如何在Java图形中正确渲染颜色

来自分类Dev

如何在Rails 4中正确渲染局部

来自分类Dev

如何在ArchLinux / LXDE中正确设置字体渲染?

来自分类Dev

如何在OpenGL ES 2中正确缩放

来自分类Dev

Win32消息泵和用于创建OpenGL上下文和渲染的std :: thread

来自分类Dev

如何在C#中正确显示Web浏览器控件中的完整网址?

来自分类Dev

Win32自定义绘制树视图控件

来自分类Dev

Win32 Edit控件混合大小写

Related 相关文章

  1. 1

    如何在Win32(C ++)静态控件中正确渲染OpenGL?

  2. 2

    如何在ActiveX控件中正确初始化OpenGL?

  3. 3

    如何在Win32中正确调用HeapSummary API?

  4. 4

    如何在OpenGL 3.1中正确渲染为纹理

  5. 5

    如何在OpenGL中正确正交渲染纹理?

  6. 6

    C ++ Win32静态控件透明背景

  7. 7

    Win32 API:如何在Edit控件中捕获转义键?

  8. 8

    Win32 API:如何在编辑控件中更改部分文本的颜色

  9. 9

    Win32 API:如何在Edit控件中捕获转义键?

  10. 10

    如何在不显示文本的情况下分配Win32 EDIT控件的窗口名称?

  11. 11

    Win32 API:如何在编辑控件中更改部分文本的颜色

  12. 12

    如何在Gui win32编程中使用静态标签和按钮

  13. 13

    如何正确处理Win32 GUI消息循环?

  14. 14

    正确使用Win32线程

  15. 15

    如何找到Win32控件/窗口相对于其父窗口的位置?

  16. 16

    如何使在没有 WS_VISIBLE 的情况下创建的 Win32 控件可见?

  17. 17

    如何在OnNavigatedTo中正确设置CheckBox控件的状态

  18. 18

    如何正确地将Win32类对象传递给函数

  19. 19

    如何使用Win32或MFC获得Windows系统的正确关机时间

  20. 20

    如何在libGDX中正确渲染泰式字体?

  21. 21

    如何在Flow中正确键入渲染道具?

  22. 22

    如何在Java图形中正确渲染颜色

  23. 23

    如何在Rails 4中正确渲染局部

  24. 24

    如何在ArchLinux / LXDE中正确设置字体渲染?

  25. 25

    如何在OpenGL ES 2中正确缩放

  26. 26

    Win32消息泵和用于创建OpenGL上下文和渲染的std :: thread

  27. 27

    如何在C#中正确显示Web浏览器控件中的完整网址?

  28. 28

    Win32自定义绘制树视图控件

  29. 29

    Win32 Edit控件混合大小写

热门标签

归档