WIN32 opengl绘制一个点
在Win32程序中,使用到gluPerspective,而这个函数需要glut.h。故需要配置相关环境。
#include "stdafx.h"
#include "Win32Project1.h"
#include "glut.h"#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);//当前的渲染设备glMatrixMode(GL_PROJECTION);//选择投影模式gluPerspective(50, 800 / 600, 0.1f, 1000.0f);//设置投影矩阵参数glMatrixMode(GL_MODELVIEW);//将投影矩阵转换成显示屏坐标glLoadIdentity();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);//清除背景颜色glColor4ub(255.0, 255.0, 255.0, 255.0);//设置点的颜色。glPointSize(20.0f);//设置点的大小glBegin(GL_POINTS);//glVertex3f(0.0f, 0.0f, -0.5f);//顶点glEnd();//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;
}
配置好的demo:http://download.csdn.net/detail/sz76211822/9757855
WIN32 opengl绘制一个点相关推荐
- OpenGL绘制一个三角形的实例
OpenGL绘制一个橘黄色的三角形 先上图,再解答. 完整主要的源代码 源代码剖析 先上图,再解答. 完整主要的源代码 #include <glad/glad.h> #include &l ...
- OpenGL绘制一个三角形
OpenGL绘制一个三角形 OpenGL绘制一个三角形简介 源代码剖析 主要源代码 OpenGL绘制一个三角形简介 在本课中,我们仍然不转换坐标,因此顶点仅在正方形内可见.从 Z 的反轴看,正方形如下 ...
- OpenGL(十八)——Qt OpenGL绘制一个3D世界
OpenGL(十八)--Qt OpenGL绘制一个3D世界 一.说明 本篇介绍构建一个3D的世界. 二.简介 加载3D世界,并在其中漫游: 在这一课中,你将学会如何加载3D世界,并在3D世界中漫游. ...
- QT使用openGL绘制一个三角形
对于opengl的学习来说,绘制一个三角形是学习一种计算机语言时的一个hello world级的入门程序,个人觉得相比主流语言的helloworld,openGL的入门确实是有一些劝退,虽然说有不错的 ...
- OpenGL绘制一个四边形
学习自:https://learnopengl-cn.github.io/01%20Getting%20started/04%20Hello%20Triangle/ OpenGL没有直接绘制四边形的a ...
- opengl es3.0学习篇七:使用opengl绘制一个立方体
2019独角兽企业重金招聘Python工程师标准>>> 这里简单运用之前所学的知识来实现一个对应的立方体: public class MainActivity extends App ...
- OpenGL绘制一个圆锥
绘制圆锥暂时没有找到一个模型完整绘制,暂时使用两个物体拼接: 圆和锥面. 缺点:这需要绘制两次才能将圆锥体绘制成功. #include "cone.h" #include < ...
- OpenGl 绘制一个立方体
https://www.cnblogs.com/icmzn/p/5049768.html https://blog.csdn.net/auccy/article/details/82392921
- OpenGL绘制桥梁模型
本文主要讲述如何使用现代OpenGL绘制一个完整的桥梁模型,包括箱梁.盖梁和桥墩,关于OpenGL方面,主要添加的shader,使用phong光照模型实现. 一.绘制箱梁 1.1 箱梁的的截面和坐标系 ...
最新文章
- diff算法_React源码揭秘(三):Diff算法详解
- pip安装了 但是python找不到_python安装完毕后,用pip安装提示找不到ssl模块怎么解决?...
- 4月02日 提取汉字首字母,并大写的类
- Java文件保存与删除工具类
- Leetcode-5199 Smallest String With Swaps(交换字符串中的元素)
- 笔记本电脑自带麦克风吗_想让声音变得好听吗,不花一分钱,让你的电脑拥有外置麦克风...
- WCF系统内置绑定列表与系统绑定所支持的功能
- maven docker plugin 常见问题解决
- 搭建DNS域名解析服务器
- Cocos2d-JS项目之三:使用合图
- matlab 四种取整函数(fix floor ceil round)的区别
- c语言 error 库,C 库函数
- access 微软以外 编辑_如何在 Microsoft Access 中修改查询属性
- 北京大学计算机学院课程表,北京大学课程表.PDF
- opencv+ArcFace人脸识别
- 霍夫曼编码最简单的实现
- java常见面试题总结2
- java编程试算平衡_发生额试算平衡要求本期每个账户借方发生额合计都与贷方发生额合计相等()_学小易找答案...
- 服务器正在维护中王者荣耀,王者荣耀7月服务器正在维护中_王者荣耀7月3日服务器正在维护中解决方法_游戏吧...
- 软件工程师的职业规划
热门文章
- The color “baseBlac in values has no declaration in the base values folder this can lead to crash
- 大白菜 装系统 win7
- php 实现我的足迹,Wordpress 实现“您的足迹”功能
- 2012系分真题案例分析 软件项目管理 工期管理
- 密室逃脱2 古堡迷城
- Git与GitHub基础全套完整版教程(持续更新....)
- 不是美术生学3D建模多久能上手?靠自学很难学成功吗?
- 记录一次在linux上配置ssl证书
- 苹果的破局几招:修漏洞、降价、官方认证翻新机……...
- uniapp 实现拨打电话