#include <atlbase.h>
#include <atlwin.h>
#include <gl/glew.h>
#include <gl/GL.h>
#pragma comment(lib, "opengl32.lib")
extern CComModule _Module; CComModule _Module; class MyWindow : public CWindowImpl<MyWindow, CWindow, CFrameWinTraits>
{
public:
MyWindow()
: m_hDC()
, m_hGLRC()
{
Create(NULL, rcDefault);
}
public:
DECLARE_WND_CLASS(_T("MyWindow"));
BEGIN_MSG_MAP(MyWindow)
MESSAGE_HANDLER(WM_CREATE, OnCreate)
MESSAGE_HANDLER(WM_SIZE, OnSize)
MESSAGE_HANDLER(WM_PAINT, OnPaint)
MESSAGE_HANDLER(WM_ERASEBKGND, OnEraseBkgnd)
MESSAGE_HANDLER(WM_DESTROY, OnDestroy)
END_MSG_MAP()
public:
LRESULT OnCreate(UINT msg, WPARAM wParam, LPARAM lParam, BOOL & bHandled)
{
m_hDC = GetDC(); PIXELFORMATDESCRIPTOR pfd = {
sizeof(PIXELFORMATDESCRIPTOR), /* size */
, /* version */
PFD_SUPPORT_OPENGL |
PFD_DRAW_TO_WINDOW |
PFD_DOUBLEBUFFER, /* support double-buffering */
PFD_TYPE_RGBA, /* color type */
, /* prefered color depth */
, , , , , , /* color bits (ignored) */
, /* no alpha buffer */
, /* alpha bits (ignored) */
, /* no accumulation buffer */
, , , , /* accum bits (ignored) */
, /* depth buffer */
, /* no stencil buffer */
, /* no auxiliary buffers */
PFD_MAIN_PLANE, /* main layer */
, /* reserved */
, , , /* no layer, visible, damage masks */
};
int pixelFormat = ChoosePixelFormat(m_hDC, &pfd);
SetPixelFormat(m_hDC, pixelFormat, &pfd);
m_hGLRC = wglCreateContext(m_hDC);
if (!m_hGLRC)
{
PostQuitMessage();
}
wglMakeCurrent(m_hDC, m_hGLRC);
glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
return true;
} LRESULT OnSize(UINT msg, WPARAM wParam, LPARAM lParam, BOOL & bHandled)
{
return true;
} LRESULT OnPaint(UINT msg, WPARAM wParam, LPARAM lParam, BOOL & bHandled)
{
if (m_hGLRC)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
}
if (m_hDC)
SwapBuffers(m_hDC);
return true;
} LRESULT OnEraseBkgnd(UINT msg, WPARAM wParam, LPARAM lParam, BOOL & bHandled)
{ return false;
} LRESULT OnDestroy(UINT msg, WPARAM wParam, LPARAM lParam, BOOL & bHandled)
{
wglMakeCurrent(NULL, NULL);
if (m_hGLRC)
wglDeleteContext(m_hGLRC);
if (m_hDC)
ReleaseDC(m_hDC);
m_hDC = ;
m_hGLRC = ;
PostQuitMessage();
return true;
}
public:
void Show()
{
ShowWindow(SW_SHOW);
UpdateWindow();
}
private:
HDC m_hDC;
HGLRC m_hGLRC;
}; int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
_Module.Init(NULL, hInstance);
MyWindow win;
win.Show();
MSG msg;
while (GetMessage(&msg, NULL, , ))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
_Module.Term();
return ;
}

ATL opengl的更多相关文章

  1. 基于C/S架构的3D对战网络游戏C++框架 _04客户端详细设计与OpenGL、Qt基础

    本系列博客主要是以对战游戏为背景介绍3D对战网络游戏常用的开发技术以及C++高级编程技巧,有了这些知识,就可以开发出中小型游戏项目或3D工业仿真项目. 笔者将分为以下三个部分向大家介绍(每日更新): ...

  2. VC、OpenGL、ArcGIS Engine开发的二维三维结合的GIS系统

    一.前言 众所周知,二维GIS技术发展了近四十年,伴随着计算机软硬件以及关系型数据库的飞速发展,二维GIS技术已日臻完善.在对地理信息的分析功能上有着无可比拟的优势.一些宏观的地理信息,一维的地理信息 ...

  3. atl控件发布打包<转>

    http://www.cnblogs.com/gengaixue/archive/2010/08/13/1799112.html ActiveX打包与发布 在VS2005或VS2008安装后发现路径* ...

  4. 【AR实验室】OpenGL ES绘制相机(OpenGL ES 1.0版本)

    0x00 - 前言 之前做一些移动端的AR应用以及目前看到的一些AR应用,基本上都是这样一个套路:手机背景显示现实场景,然后在该背景上进行图形学绘制.至于图形学绘制时,相机外参的解算使用的是V-SLA ...

  5. [OpenGL超级宝典]专栏前言

    我小时候的梦想呢,是做宇航员或者科学家或者是做一款属于自己的游戏,后来前面两个梦想都没有实现,于是我就来实现我的第三个梦想了,,,我呢,也算是零基础,因为我的专业是物联网工程,这个专业覆盖面之广,简直 ...

  6. OpenGL超级宝典笔记----渲染管线

    在OpenGL中任何事物都在3D空间中,但是屏幕和窗口是一个2D像素阵列,所以OpenGL的大部分工作都是关于如何把3D坐标转变为适应你屏幕的2D像素.3D坐标转为2D坐标的处理过程是由OpenGL的 ...

  7. OpenGL超级宝典笔记----框架搭建

    自从工作后,总是或多或少的会接触到客户端3d图形渲染,正好自己对于3d图形的渲染也很感兴趣,所以最近打算从学习OpenGL的图形API出发,进而了解3d图形的渲染技术.到网上查了一些资料,OpenGL ...

  8. 现代3D图形编程学习-基础简介(3)-什么是opengl (译)

    本书系列 现代3D图形编程学习 OpenGL是什么 在我们编写openGL程序之前,我们首先需要知道什么是OpenGL. 将OpenGL作为一个API OpenGL 通常被认为是应用程序接口(API) ...

  9. OpenGL shader 中关于顶点坐标值的思考

    今天工作中需要做一个事情: 在shader内部做一些空间距离上的计算,而且需要对所有的点进行计算,符合条件的显示,不符合条件的点不显示. 思路很简单,在vertex shader内知道顶点坐标,进行计 ...

随机推荐

  1. TypeUtils -- Object 转为 强类型

    public static class TypeUtils { /// <summary> /// Object 转为 强类型 /// </summary> public st ...

  2. MAC OS U 盘制作与安装方法

    伴随着 iMac 5K Retina 和新的 Mac mini 等硬件的发布,苹果终于都推出了 OS X Yosemite 系统正式版了!相信很多人都已经用上.不过对于一些不想升级,而是打算「全新安装 ...

  3. 鼠标形状css样式

    鼠标形状css样式 <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...

  4. aforge通过角点匹配图片相似度

    我不知道什么原因,人品不好还是啥的 ExhaustiveTemplateMatching这个类无法高精确度的匹配图片 ........... 换一种方式,就好得多 /// <summary> ...

  5. CodeForces 706C Hard problem

    简单$dp$. $dp[i][0]$:第$i$个串放置完毕,并且第$i$个串不反转,前$i$个串字典序呈非递减的状态下的最小费用. $dp[i][1]$:第$i$个串放置完毕,并且第$i$个串反转,前 ...

  6. excel 导入 与 导出

    Excel导入 public ActionResult Excel(HttpPostedFileBase file)        {            HttpPostedFileBase fi ...

  7. Java 并发 线程的优先级

    Java 并发 线程的优先级 @author ixenos 低优先级线程的执行时刻 1.在任意时刻,当有多个线程处于可运行状态时,运行系统总是挑选一个优先级最高的线程执行,只有当线程停止.退出或者由于 ...

  8. ap143 led修改

    以前的硬件版本只使用了一个eth口,新的板子增加了一个eth口,并且增加了响应的通信时使用的灯. led修改涉及到一下的内容: (1)led 对应的gpio口(这个需要根据原理图来定义) 需要修改的源 ...

  9. 怎么 得到 DBGrid选中行的数据

    转自:https://zhidao.baidu.com/question/1694035814426308148.html 一般是你鼠标点到哪一行,其DataSet的指针就指到了什么位置你可以直接通过 ...

  10. [转]8 Regular Expressions You Should Know

    Regular expressions are a language of their own. When you learn a new programming language, they're ...