【OpenGL从入门到精通(二)】绘制一个点

1.想要绘制一个点,首先要在OpenGL初始化中先设置矩阵

2.然后在绘制场景中进行点的绘制。其中包括 当前颜色设置;点的位置,点的大小等等

#include <windows.h>
#include<gl/GL.h>
#include<gl/GLU.h>#pragma comment(lib,"opengl32.lib")
#pragma comment(lib,"glu32.lib")LRESULT CALLBACK GLWindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{switch (msg){case WM_CLOSE:PostQuitMessage(0);break;}return DefWindowProc(hwnd, msg, wParam, lParam);
}INT WINAPI WinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPSTR lpCmdLine, _In_ int nShowCmd)
{//register windowWNDCLASSEX wndclass;wndclass.cbClsExtra = 0;wndclass.cbSize = sizeof(WNDCLASSEX);wndclass.cbWndExtra = 0;wndclass.hbrBackground = NULL;wndclass.hCursor = LoadCursor(NULL,IDC_ARROW);wndclass.hIcon = NULL;wndclass.hIconSm = NULL;wndclass.hInstance = hInstance;wndclass.lpfnWndProc = GLWindowProc;wndclass.lpszClassName = L"GLWindow";wndclass.lpszMenuName = NULL;wndclass.style = CS_VREDRAW | CS_HREDRAW;ATOM atom = RegisterClassEx(&wndclass);if (!atom){return 0;}//create windowHWND hwnd = CreateWindowEx(NULL, L"GLWindow", L"OpenGL Window", WS_OVERLAPPEDWINDOW,100, 100, 800, 600, NULL, NULL, hInstance, NULL);//create opengl render context  HDC是Windows的设备描述表句柄。HDC dc = GetDC(hwnd);//颜色描述符,渲染的像素格式PIXELFORMATDESCRIPTOR pfd;memset(&pfd, 0, sizeof(PIXELFORMATDESCRIPTOR));pfd.nVersion = 1;pfd.nSize = sizeof(PIXELFORMATDESCRIPTOR);pfd.cColorBits = 32;//颜色缓冲区pfd.cDepthBits = 24;//深度缓冲区pfd.cStencilBits = 8;//pfd.iPixelType = PFD_TYPE_RGBA;//像素格式pfd.iLayerType = PFD_MAIN_PLANE;//分层式pfd.dwFlags = PFD_DRAW_TO_WINDOW|PFD_SUPPORT_OPENGL|PFD_DOUBLEBUFFER;//渲染到窗口上,支持OPENGL像素格式,双缓冲//选择像素格式int pixelFormat = ChoosePixelFormat(dc,&pfd);SetPixelFormat(dc, pixelFormat, &pfd);//创建OPenGL的渲染设备,HGLRC rc = wglCreateContext(dc);//把rc和dc设置成当前的渲染设备wglMakeCurrent(dc, rc);//初始化OpenGL的/*画点需要先设置矩阵*/glMatrixMode(GL_PROJECTION);//告诉显卡要操作投影矩阵gluPerspective(50.0f, 800.0f / 600.0f, 0.1f, 1000.0f);//设置投影矩阵glMatrixMode(GL_MODELVIEW);//设置模型矩阵glLoadIdentity();//给它一个单位矩阵glClearColor(0.1, 0.4, 0.6, 1.0);//设置清除缓冲区背景颜色//show windowShowWindow(hwnd, SW_SHOW);UpdateWindow(hwnd);MSG msg;while (true){if (PeekMessage(&msg, NULL, NULL, NULL, PM_REMOVE)){if (msg.message == WM_QUIT){break;}TranslateMessage(&msg);DispatchMessage(&msg);}//draw scene绘制场景glClear(GL_COLOR_BUFFER_BIT);glColor4ub(255, 255, 255, 255);//设置当前颜色glPointSize(20.0f);glBegin(GL_POINTS);//从当前点取颜色glVertex3f(0.0f, 0.0f, -0.5f);//画点的数据glEnd();//end//present scene 前面缓冲区//后缓冲区交换到前缓冲区SwapBuffers(dc);}return 0;
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/336165.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

spring 启动加载数据_12个很棒的Spring数据教程来启动您的数据项目

spring 启动加载数据Spring Data的任务是为数据访问提供一个熟悉且一致的&#xff0c;基于Spring的编程模型&#xff0c;同时仍保留基础数据存储的特​​殊特征。 它使使用数据访问技术&#xff0c;关系和非关系数据库&#xff0c;map-reduce框架以及基于云的数据服务变得容易…

concurrenthashmap_ConcurrentHashMap是如何保证线程安全的

文章已同步发表于微信公众号JasonGaoH&#xff0c;ConcurrentHashMap是如何保证线程安全的之前分析过HashMap的一些实现细节&#xff0c;关于HashMap你需要知道的一些细节, 今天我们从源码角度来看看ConcurrentHashMap是如何实现线程安全的&#xff0c;其实网上这类文章分析特别…

计算机系统计算机,计算机系统与计算机化系统的区别

2010版GMP正文中提到“计算机”的地方一共三处&#xff0c;两处用的是计算机化&#xff0c;一处用的是“计算机”。在GMP的术语条款&#xff0c;则只提到了“计算机化系统”&#xff0c;2015年12月生效的GMP附录中的表述也是“计算机化系统”。那么“计算机系统”与“计算机化系…

【OpenGL从入门到精通(三)】第一个点的理论

OpenGL状态机 一&#xff0c;OpenGL是一个状态机matrix中包括&#xff1a; model view (模型矩阵) worldpos(世界坐标,也称为顶点坐标)通过mv(模型矩阵)转到cameru摄像机下&#xff08;根据右手坐标系&#xff0c;只有在Z的负方向才可以看得见&#xff09; projection …

cloud foundry_将Spring Boot应用程序绑定到Cloud Foundry中的服务的方法

cloud foundry如果要试用Cloud Foundry &#xff0c;最简单的方法是下载出色的PCF开发人员或在Pivotal Web Services站点上创建试用帐户。 其余文章假定您已经安装了Cloud Foundry&#xff0c;并且对Cloud Foundry有了较高的了解。 这篇文章的目的是列出将Java应用程序集成到服…

js find的用法_React常用库Immutable.js常用API

JavaScript 中的对象一般是可变的(Mutable)&#xff0c;因为使用了引用赋值&#xff0c;新的对象简单的引用了原始对象&#xff0c;改变新的对象将影响到原始对象。如 foo{a: 1}; barfoo; bar.a2 你会发现此时 foo.a 也被改成了 2。虽然这样做可以节约内存&#xff0c;但当应用…

教学案例 计算机,计算机教学案例

海量优秀的免费计算机教学案例范文供您参考与下载&#xff0c;关于计算机教学案例的免费论文范文参考资料是由2016年最新的相关论文题目按照标准论文格式模板写作的,适合不知道怎么写计算机教学案例的大学毕业生,对相关的本科论文和硕士毕业论文及职称论文发表写作有参考价值&a…

java 开发:md5_Java社区调查结果:74%的开发人员希望减少详细程度

java 开发:md5一个新的JDK增强建议&#xff08;JEP&#xff09;在Java社区中风起云涌&#xff1a;JEP286。该建议建议在Java的未来版本中引入局部变量类型推断&#xff0c;以简化Java应用程序的编写。 在下面的文章中&#xff0c;我们将解释它的含义以及它将如何影响您的代码。…

python获取当前目录_又有几个Python小技巧分享

今天这篇文章为大家带来几个Python使用的小技巧&#xff1a;快速生成依赖文件文件路径处理通过set将对象去重单元测试unitest捕获异常快速生成依赖文件Python通过requirements.txt来管理项目所依赖的库&#xff0c;通过pip install -r requirements.txt命令可以直接安装项目所需…

计算机弹歌曲做我老婆好不好,做我老婆好不好吉他谱(图片谱,指弹,做我老婆好不好,徐誉滕)_徐誉滕(徐海;徐歆舜)...

做我老婆好不好词曲&#xff1a;徐誉滕演唱&#xff1a;徐誉滕走过多少路口 听过多少叹息我认真着你的不知所措这种迷茫心情 我想谁都会有幸运的是能分担你的愁能不能靠近一点 能不能再近一点满足我心中小小的虚荣其实你并不知道 在我心中你最美就像风雨过后天边的那道彩虹如果…

python敏感字替换_python用类实现文章敏感词的过滤方法示例

过滤一遍并将敏感词替换之后剩余字符串中新组成了敏感词语,这种情况就要用递归来解决&#xff0c;直到过滤替换之后的结果和过滤之前一样时才算结束 第一步:建立一个敏感词库(.txt文本)第二步:编写代码在文章中过滤敏感词(递归实现) # -*- coding: utf-8 -*- # author 代序春秋…

2018年冷链百强_在分析了47,251个依赖关系之后,2016年Java图书馆百强

2018年冷链百强谁在上面&#xff0c;谁在后面&#xff1f; 我们分析了Github上的47,251个依赖关系&#xff0c;并抽取了前100个Java库 对于长周末而言&#xff0c;我们最喜欢的消遣是浏览Github并搜索流行的Java库。 我们决定与您分享乐趣和信息。 我们分析了Github上前3,862…

【FFMPEG应用篇】基于FFmpeg的封装格式转换

/* * 一笑奈何 * cn-yixiaonaihe.blog.csdn.net */#include <iostream> #include <thread> extern "C" { #include "libavformat/avformat.h" #include "libavcodec/avcodec.h" #include "libswscale/swscale.h" #inc…

计算机键盘标注,电脑键盘上怎么打√和×

用电脑键盘上打出√和两个符号的方法1、在输入法开启状态下&#xff0c;鼠标右键点击输入法状态栏上面的“软键盘图标”&#xff0c;然后选择“数学符号”(直接右击打不开就先左击再右击)。2、在数学符号的软键盘面板上直接用鼠标点击“√和”就好(光标要定位在需要输入的地方)…

python中运算符号怎样表示_Python中的运算符与表达式

你所编写的大多数语句&#xff08;逻辑行&#xff09;都包含了表达式&#xff08;Expressions&#xff09;。一个表达式的简单例子便是 23。表达式可以拆分成运算符&#xff08;Operators&#xff09;与操作数&#xff08;Operands&#xff09;。 运算符&#xff08;Operators&…

web服务优化与健壮性改进_创建健壮的微服务架构所涉及的组件

web服务优化与健壮性改进在本文中&#xff0c;我们将简要学习构建强大的微服务应用程序所需的各种软件组件。 在简要了解每个架构组件之前&#xff0c;我们将陈述设计微服务架构时出现的一般查询。 1.微服务架构组件 每当我们创建微服务应用程序时&#xff0c;我们都会想到以下…

计算机对油画的影响,现代电脑美术影响下的油画艺术创作

摘要&#xff1a;"21世纪的文盲不是不识字,而是不会读图."随着视觉文化和电脑网络的快速发展,计算机技术也广泛地涵盖了整个意识形态领域.图像已成为这个时代的最大资源,我们已经快速进入"读图时代".九十年代起,计算机图形艺术在科技的带动下飞速发展,电脑…

【FFMPEG应用篇】基于FFmpeg的RGB格式封装MOV文件

/* * 一笑奈何 * cn-yixiaonaihe.blog.csdn.net */#include <iostream> #include <thread> extern "C" { #include "libavformat/avformat.h" #include "libavcodec/avcodec.h" #include "libswscale/swscale.h" #inc…

python launcher卸载后蓝屏_误卸载python2.4导致yum不能用后的修复

去 http://mirrors.ustc.edu.cn/centos/或者镜像下载如下包&#xff0c;版本不一定非常一致 python-2.4.3-56.el5.x86_64.rpm python-devel-2.4.3-56.el5.i386.rpm python-devel-2.4.3-56.el5.x86_64.rpm python-iniparse-0.2.3-6.el5.noarch.rpm python-libs-2.4.3-56.el5.x86…

owin 怎么部署在云中_使用Boxfuse轻松在云中运行Spring Boot应用程序

owin 怎么部署在云中几天前&#xff0c;我开始构建一个将使用REST API检索和存储数据的iOS应用。 该REST API将是我也必须构建的服务器应用程序。 由于我熟悉Java和Spring &#xff0c;因此决定使用Spring Boot作为框架。 为了能够在我的iPhone上使用它&#xff0c;如果我可以在…