#include "stdafx.h"
#include "Win32Project1.h"
#include <gl/gl.h>
#include <gl/GLU.h>
#pragma comment(lib, "opengl32.lib")#define MAX_LOADSTRING 100// 全局变量:
HINSTANCE hInst;                                // 当前实例
HWND hWnd;
TCHAR szTitle[MAX_LOADSTRING];                  // 标题栏文本
TCHAR szWindowClass[MAX_LOADSTRING];            // 主窗口类名// 此代码模块中包含的函数的前向声明:
ATOM                MyRegisterClass(HINSTANCE hInstance);
BOOL                InitInstance(HINSTANCE, int);
LRESULT CALLBACK    WndProc(HWND, UINT, WPARAM, LPARAM);
INT_PTR CALLBACK    About(HWND, UINT, WPARAM, LPARAM);int APIENTRY _tWinMain(_In_ HINSTANCE hInstance,_In_opt_ HINSTANCE hPrevInstance,_In_ LPTSTR    lpCmdLine,_In_ int       nCmdShow)
{UNREFERENCED_PARAMETER(hPrevInstance);UNREFERENCED_PARAMETER(lpCmdLine);// TODO:  在此放置代码。MSG msg;HACCEL hAccelTable;// 初始化全局字符串LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);LoadString(hInstance, IDC_WIN32PROJECT1, szWindowClass, MAX_LOADSTRING);MyRegisterClass(hInstance);// 执行应用程序初始化: if (!InitInstance (hInstance, nCmdShow)){return FALSE;}hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_WIN32PROJECT1));///HDC hdc = GetDC(hWnd);PIXELFORMATDESCRIPTOR pdf;//选取opengl渲染的像素格式memset(&pdf, 0, sizeof(PIXELFORMATDESCRIPTOR));pdf.nSize = sizeof(PIXELFORMATDESCRIPTOR);pdf.nVersion = 1;pdf.cColorBits = 32;//颜色缓冲区。RGBApdf.cDepthBits = 24;//深度缓冲区pdf.cStencilBits = 8;pdf.iPixelType = PFD_TYPE_RGBA; //像素个数pdf.iLayerType = PFD_MAIN_PLANE;//pdf.dwFlags = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER/*双缓冲*/;//将opengl与HDC绑定int nPixformat = ChoosePixelFormat(hdc, &pdf);SetPixelFormat(hdc, nPixformat, &pdf);HGLRC rc = wglCreateContext(hdc);wglMakeCurrent(hdc, rc);//当前的渲染设备glClearColor(1.0, 0.0, 0.0, 0.0);// 主消息循环: while (GetMessage(&msg, NULL, 0, 0)){if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg)){TranslateMessage(&msg);DispatchMessage(&msg);}glClear(GL_COLOR_BUFFER_BIT);//glClearColor(1.0, 0.0, 0.0, 0.0);SwapBuffers(hdc);}return (int) msg.wParam;
}//
//  函数:  MyRegisterClass()
//
//  目的:  注册窗口类。
//
ATOM MyRegisterClass(HINSTANCE hInstance)
{WNDCLASSEX wcex;wcex.cbSize = sizeof(WNDCLASSEX);wcex.style           = CS_HREDRAW | CS_VREDRAW;wcex.lpfnWndProc = WndProc;wcex.cbClsExtra      = 0;wcex.cbWndExtra        = 0;wcex.hInstance     = hInstance;wcex.hIcon         = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_WIN32PROJECT1));wcex.hCursor     = LoadCursor(NULL, IDC_ARROW);wcex.hbrBackground   = (HBRUSH)(COLOR_WINDOW+1);wcex.lpszMenuName  = MAKEINTRESOURCE(IDC_WIN32PROJECT1);wcex.lpszClassName    = szWindowClass;wcex.hIconSm       = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));return RegisterClassEx(&wcex);
}//
//   函数:  InitInstance(HINSTANCE, int)
//
//   目的:  保存实例句柄并创建主窗口
//
//   注释:
//
//        在此函数中,我们在全局变量中保存实例句柄并
//        创建和显示主程序窗口。
//
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{hInst = hInstance; // 将实例句柄存储在全局变量中hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);if (!hWnd){return FALSE;}ShowWindow(hWnd, nCmdShow);UpdateWindow(hWnd);return TRUE;
}//
//  函数:  WndProc(HWND, UINT, WPARAM, LPARAM)
//
//  目的:    处理主窗口的消息。
//
//  WM_COMMAND  - 处理应用程序菜单
//  WM_PAINT    - 绘制主窗口
//  WM_DESTROY  - 发送退出消息并返回
//
//
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{int wmId, wmEvent;PAINTSTRUCT ps;HDC hdc;switch (message){case WM_COMMAND:wmId    = LOWORD(wParam);wmEvent = HIWORD(wParam);// 分析菜单选择: switch (wmId){case IDM_ABOUT:DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);break;case IDM_EXIT:DestroyWindow(hWnd);break;default:return DefWindowProc(hWnd, message, wParam, lParam);}break;case WM_PAINT:hdc = BeginPaint(hWnd, &ps);// TODO:  在此添加任意绘图代码...EndPaint(hWnd, &ps);break;case WM_DESTROY:PostQuitMessage(0);break;default:return DefWindowProc(hWnd, message, wParam, lParam);}return 0;
}// “关于”框的消息处理程序。
INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{UNREFERENCED_PARAMETER(lParam);switch (message){case WM_INITDIALOG:return (INT_PTR)TRUE;case WM_COMMAND:if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL){EndDialog(hDlg, LOWORD(wParam));return (INT_PTR)TRUE;}break;}return (INT_PTR)FALSE;
}

下载地址:http://download.csdn.net/detail/sz76211822/9757850

WIN32 opengl环境搭建相关推荐

  1. Mac VSCode OpenGL环境搭建

    Mac VSCode OpenGL环境搭建 1.安装glfw brew install glfw 2.下载glad https://glad.dav1d.de/ 选择合适的版本后 拷贝glad文件夹到 ...

  2. LVGL WIN32模拟器环境搭建

    LVGL WIN32模拟器环境搭建 LVGL简介 环境搭建 IDE 选择 模拟器代码下载 PC模拟器搭建 其他配置项说明 LVGL简介 LVGL是一个跨平台.轻量级.易于移植的图形库.因其支持大量特性 ...

  3. OpenGL环境搭建:vs2013+freeglut2.8.1+glew1.7.0+gltools

    前言:之前同事说OpenGL环境贼难搭建,搭建了好多次都没成功过.恰巧最近自己也在学习OpenGL超级宝典,开发环境这块必须得支持,否则往后学习就是光看不练假把式了.于是今天特意花了一上午时间上网搜索 ...

  4. OPengl学习(二)——opengl环境搭建

    文章目录 0. 概念/准备 1.VS+Opengl 快速添加 手动编译 2.QT中使用opengl 1.pro配置文件 2.引入头文件 继承QGLWidget 3.实现三个主要函数 3.引用 0. 概 ...

  5. OpenGL环境搭建

    GLFW GLFW是一个OpenGL的C语言库,它提供了渲染物体所需要的最低限度的接口,它允许用户创建OpenGL上下文,定义窗口参数以及用户的输入. 构建GLFW GLFW可以从它的官方网站下载,目 ...

  6. OpenGL环境搭建(四)

    说起编程作图,大概还有很多人想起TC的#include <graphics.h>吧? 但是各位是否想过,那些画面绚丽的PC游戏是如何编写出来的?就靠TC那可怜的640*480分辨率.16色 ...

  7. OpenGL环境搭建:Win7 VS2013X64 +freeglut2.8.1+glew1.7.0+gltools

    Windows平台搭建篇: 方式一:采用Win7 VS2013X64 +freeglut-2.8.1+glew-1.7.0+gltools进行搭建.搭建流程如下: 1.下载glew-1.7.0:根据自 ...

  8. Win32汇编环境搭建教程(MASM32 SDK)

    一.说明 常用的32位汇编编译器有微软的MASM.Borland的TASM和NASM. 编译器 开发者 优点 缺点 MASM 微软 微软自家软件和系统兼容性好:支持invoke/.if等伪指令将汇编变 ...

  9. Ubuntu16.04系统nvidia显卡上图形界面及OpenGL环境搭建心得

    之前实验室的服务器上的外置GPU一直是用来处理深度学习等任务,没有用来做图形界面的显示,现在想要用OpenGL做开发,然而在Linux下,OpenGL是使用输出图形界面的GPU做为运算资源的,无法更改 ...

最新文章

  1. 登录屏幕上不要显示上次登录的用户名 图文教程[server 2003/2008]
  2. linux条件表达式例子,Linux的Iptables命令的基本知识(三)-常用匹配条件示例和执行动作...
  3. flume taildir 启动异常LifecycleSupervisor$MonitorRunnable.run
  4. TP5的请求响应参数
  5. oracle expdp数据到txt,[20130727]ORACLE 12C使用expdp导出view数据.txt
  6. springsession使用redis
  7. 全球10亿美元以上富翁人数排名,杭州超越东京,大家怎么看
  8. html:(34):下划线和删除线
  9. App后台开发运维和架构实践学习总结(13)——OAuth 2.0 概述流程理解
  10. 如何制作出色的R可重现示例
  11. 记一次消息总线的打造 - McKay - 博客园
  12. html的3d旋转木马插件,纯js超酷3D旋转木马特效插件
  13. linux下哪个输入法最好,[最好]linux下输入法→linux下输入法
  14. Python图像处理丨认识图像锐化和边缘提取的4个算子
  15. 数学建模——正态分布检验
  16. 基于spring cloud + nacos + gateway + ssm+的学生管理系统
  17. 如何修改计算机网络密码,无线网密码怎么改,教您如何修改无线网络密码
  18. dechex() 函数
  19. 什么是ADB,什么是MC
  20. 腾讯视频显示网络连接服务器失败怎么办,腾讯视频不能投屏怎么回事 腾讯视频无法投屏的解决方法...

热门文章

  1. 计算机二级考MS office还是WPS office?
  2. cacheable 过期设置
  3. 【牛客网-公司真题-前端入门篇】——小米秋招笔试-前端
  4. 基于R语言的文本挖掘技术
  5. 大鱼号自媒体如何快速通过试运营转正?
  6. 快手的未来,没有宿华
  7. Location is not available,the folder or directory is corrupted and unreadable
  8. B. Wilbur and Array
  9. 电子招投标采购系统之电子招标投标的全流程!企业电子招投标系统源码
  10. Nakagami分布