#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, 1.0, 1.0, 0.0);// 主消息循环: while (GetMessage(&msg, NULL, 0, 0)){if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg)){TranslateMessage(&msg);DispatchMessage(&msg);}glLoadIdentity();glClear(GL_COLOR_BUFFER_BIT);//清除背景颜色glColor4ub(255.0, 255.0, 255.0, 255.0);//设置点的颜色。glScalef(1.0, 1.0, 2.0);glRotatef(30.0f, 1.0, 1.0, 1.0);glTranslatef(2.0, 1.0, 1.0);glLineWidth(5.0);glBegin(GL_POLYGON);glColor4ub(255.0, 0.0, 0.0, 255.0);//设置当前点的颜色。glVertex3f(0.0, 0.0, -10.0f);glColor4ub(0.0, 255.0, 0.0, 255.0);//设置当前点的颜色。glVertex3f(-3.0f, 0.0, -10.0f);glColor4ub(0.0, 0.0, 255.0, 255.0);//设置当前点的颜色。glVertex3f(-0.0f, -3.0, -10.0f);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;
}

缩放图形后,先旋转、后移动跟先移动后旋转时不一样的。
http://download.csdn.net/detail/sz76211822/9758079

WIN32 opengl缩放、旋转、移动图形相关推荐

  1. Win32 OpenGL 编程

    Win32 OpenGL 编程(1)Win32下的OpenGL编程必须步骤 一.    前言 人生在于折腾,继续折腾吧. OpenGL 编程的红宝书< OpenGL Programming Gu ...

  2. [Python从零到壹] 三十八.图像处理基础篇之图像几何变换(平移缩放旋转)

    欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...

  3. Win32 OpenGL编程系列 2D例子 -- 七巧板图形绘制

    write by 九天雁翎(JTianLing) -- blog.csdn.net/vagrxie 讨论新闻组及文件 OpenGL系列文章都已经写到3D部分了,但是感觉2D的例子还是少了点,特意弄个外 ...

  4. Win32 OpenGL编程(4) 2D图形基础(颜色及坐标体系进阶知识)

    Win32 OpenGL 编程 (4) 2D 图形基础(颜色及坐标体系进阶知识) write by 九天雁翎 (JTianLing) -- blog.csdn.net/vagrxie 讨论新闻组及文件 ...

  5. R语言使用magick包的image_rotate函数、image_flip函数、image_flop函数对图像进行缩放旋转、镜像、翻转(Rotate or mirror the image)

    R语言使用magick包的image_rotate函数.image_flip函数.image_flop函数对图像进行缩放旋转.镜像.翻转(Rotate or mirror the image) 目录

  6. Win32 OpenGL标准例子

    原文:http://www.cnblogs.com/wurui1994/p/6058882.html Win32 OpenGL标准例子 在VS2008的MSDN中有一个标准的OpenGL例子,记录如下 ...

  7. OpenGL缩放转换

    OpenGL缩放转换 OpenGL缩放转换简介 源代码剖析 主要源代码 OpenGL缩放转换简介 此转换的目的是增大或减小对象的大小.如果要使用单个模型(例如,使用相同模型的大大小小的树)添加多样性, ...

  8. pr如何跳到关键帧_教你如何使用Final cut pro X制作拉伸缩放旋转的效果|键盘|final|pro|cut...

    Final cut pro X作为最专业的多媒体视频剪辑软件,很多网友都喜欢用它来做视频的一些特效和剪辑,那么如何才能熟练的掌握这款软件的使用方法呢,今天macz为您整理了一篇简单的fcpx使用教程, ...

  9. jQuery 缩放 旋转 裁剪图片 Image Cropper

    A simple jQuery image cropping plugin. Demo cropper是一款使用简单且功能强大的图片剪裁jQuery插件.该图片剪裁插件支持图片放大缩小,支持图片旋转, ...

最新文章

  1. 先验概率,后验概率,条件概率,贝叶斯
  2. python模块--如何相互调用自己写的模块
  3. C++的类什么时候需要虚析构函数
  4. 2017年10月31日结束Outlook 2007与Office 365的连接
  5. 关于被代理的bean的注入的问题
  6. Linux C编程--打开和关闭流
  7. foxpro被什么软件取代_MATLAB可以被取代么?可以被什么软件取代?
  8. ArrayList为何线程不安全,如何解决
  9. faster_rcnn c++版本的 caffe 封装,动态库(2)
  10. Ubuntu gbk,utf-8 转换
  11. Java基础——String类(二)
  12. 堆排序、快速排序、归并排序总结
  13. 《Linux命令行与shell脚本编程大全》 第一、二章 学习笔记
  14. Linux 抄袭 Unix ?今日终有定论!
  15. typora的安装和配置
  16. webstorm如何支持markdown
  17. 绕过某省某大学校园网的探索(处女作)
  18. 高性能计算服务器8280,AMD秀实力:第二代霄龙64核性能是英特尔Xeon Platinum8280两倍...
  19. 2020.10.7--PS--填充图层、调整图层、调整图层与剪贴蒙版
  20. Unity中左右手系转换

热门文章

  1. 别让拖延毁掉你自己 | 《拖延心理学》全书解读
  2. 【云原生 | Kubernetes 系列】K8s 实战 管理 Secret 详解
  3. 电脑同时开有线和无线,优先使用哪个?
  4. 查看字符的所占字节数
  5. python实现模拟浏览器操作
  6. laragon用php连接数据库,Laragon - PHP 集成环境 - 技术资源库 - by 安拓网络技术资源库 - by 安拓网络...
  7. 深度学习基础:机器学习中的基函数与函数空间
  8. 基于 Node.js + Koa 构建完整的 Web API (配置 ESLint 和使用 Airbnb 编码规范)
  9. 小米5s Plus 安装Xposed框架
  10. 九。温暖地待人,你才会得到意想不到的惊喜结果。