openGL--GLUT

openGL学习之glut库的使用 对于初学者来说,做小项目用的glut已经很足够了,它的定义是用于简单程序和初学者学习使用的简单的、容易的、小的。 vs2015创建空项目: 然后在项目中添加glut中include路径: 先创建一个调用glut.h的大框架: #include <GL/glut.h> // 创建图形窗口的基本宏 #define WINDOW_X_POS 50 #define WINDOW_Y_POS 50 #define WIDTH 700 #define HEIGHT 700 // 用于注册 GLUT 的 阅读详情
"GLUT"[I] 全称为 OpenGL Utility Toolkit.[/I] Mark J. Kilgard 创作的 GLUT 库, 是我们创建完全独立于窗口系统的 OpenGL 程序成为可能. 感谢 GLUT, 我们能够在不了解 X Windows 或者 Microsoft Windows 窗口系统本身的情况下编写3D应用程序. Kilgard 编写了GLUT的 X Windows 版本, 后来, Nate Robins 又将之移植到 Microsoft Windows 系统之上. 
在这份教程里, 我将向你介绍一些关于编写 GLUT 应用程序的一些基础.  好的,现在一切准备就绪, 我们可以开始编写 GLUT 应用程序了.  
在这一节中, 我们将会建造应用程序的主函数(main function). 主函数将会将会完成程序的初始化并启动事件处理循环. 所有函数都有一个前缀 glut , 初始化函数的前缀是 glutInit. 我们首先必须调用函数 glutInit.  代码  
void glutInit(int *argc, char **argv);
//参数:  //argc - 一个指向主函数 argc 变量的 未经修改 的指针.
      //argv - 一个指向主函数 argv 变量的 未经修改 的指针.
初始化 GLUT 本身以后, 我们将会定义我们的窗口. 首先, 我们建立窗口的位置, 例如: 在窗口的左上角. 要实现这个功能, 我们需要调用函数 glutWindowsPosition.  
代码 void glutInitWindowPosition(int x, int y); 
//参数: //x- 距离屏幕左边的像素数. 默认值是 -1, 由系统决定窗口的位置. 如果没有没有采用默认值, 那么你应该使用一个合适正值作为实参.  //y- 距离屏幕屏幕顶端的像素数, 其余同上.  请注意, 这些参数只是给窗口管理器的一个建议值. 我们创建的窗口可能会处于不同的位置上, 不过这很少发生. 接下来我们要决定窗口的大小, 为了做到这一点, 我们需要使用函数 glutInitWindowSize.
代码  void glutInitWindowSize(int width, int height);参数:width - 窗口的宽度  height - 窗口的高度  同样的, 高和宽也只是一个建议值, 请避免使用负值.
然后我们需要定义显示模式, 我们使用 glutInitDisplayMode 函数. 
代码 void glutInitDisplayMode(unsigned int mode)参数: mode - 指定显示模式  //mode 参数是一个 GLUT 预定义常数的复合布尔型 (位或). 你可以使用 mode 来指定颜色, 以及缓冲区的数量和类型.  这些常数是:GLUT_RGBA or GLUT_RGB - 默认颜色模式 GLUT_INDEX - 颜色索引模式 
显示模式允许你选择单或双缓冲区窗口. 相关常数是: GLUT_SINGLE - 单缓冲区窗口 GLUT_DOUBLE - 双缓冲区, 平滑动画需要
这里还有更多关于缓冲区的常数: GLUT_ACCUM - 聚集缓冲区 GLUT_STENCIL - The stencil buffer 
GLUT_DEPTH - 深度缓冲区 现在, 假如你想要创建一个RGB窗口, 单缓冲以及一个深度缓冲区. 你需要把相关的常数去 OR 在一起来创建一个正确的常口 
代码 glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE | GLUT DEPTH);  经过以上步骤, 我们可以调用 glutCreateWindow 函数了
代码int glutCreateWindow(char *title); 
参数: title - 窗口标题  glutCreateWindows 函数的返回值是索创建窗口的标示符. 你以后会用到这个标示符. 现在, 我们把上面的代码集合起来, 看看一次完整的窗口初始化:  
代码#include  
void main(int argc, char **argv) { 
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DEPTH | GLUT_SINGLE | GLUT_RGBA);
glutInitWindowPosition(100,100);
glutInitWindowSize(320,320);
 glutCreateWindow("3D Tech- GLUT Tutorial"); }  请注意包含文件, 我们需要 GLUT 的包含文件.如果你运行了这段代码, 那么你将看到一个黑色的控制台窗口, 但是没有任何OpenGL窗口, 几秒钟以后, 这个窗口也消失了. 在我们开始渲染之前 我们还要做两件事情: 首先是告诉 GLUT 系统负责渲染的函数: 我们来创建一个渲染函数的例子. 这个函数将会清空颜色缓冲区, 并画出两个三角形: 代码 void renderScene(void) {  glClear(GL_COLOR_BUFFER_BIT); glBegin(GL_TRIANGLES);  glVertex3f(-0.5,-0.5,0.0);   glVertex3f(0.5,0.0,0.0);  glVertex3f(0.0,0.5,0.0); glEnd(); glFlush(); }   你可以给函数起任意的名字. 然而, 你必须告诉 GLUT 来使用这个函数进行渲染. 这叫做 注册回叫(callback) 函数. GLUT 将会在需要渲染的时候呼叫这个函数. 现在我们来告诉 GLUT 一旦我们的窗口被破坏(注意: 当窗口第一次被创建的时候, 这个函数也会被呼叫), 就调用renderScene函数. GLUT 中有一个函数接受一个函数指针作为参数, 它将这个指针指向的函数作为渲染函数.  代码  void glutDisplayFunc(void (*func)(void)); 参数:func - 渲染函数指针, NULL在这里非法  One last thing missing, that is telling GLUT that we're ready to get in the application event processing loop. GLUT provides a function that gets the application in a never ending loop, always waiting for the next event to process. The GLUT function is glutMainLoop, and the syntax is as follows: 我们最后要做, 就是让程序进入事件处理循环. GLUT 给我们准备了一个函数来使程序进入一个无限循环(死循环), 永远在等待下一个需要处理的事件. 这个函数就是 glutMainLoop: 代码 void glutMainLoop(void)  The code so far is presented bellow. Note that we've added an include statement in order to start using standard OpenGL functions, like glClear, glBegin, glVertex3f, and glEnd.
  
  以下是完整的代码. 我们添加了一个新的包含文件, 以便于我们使用OpenGL的函数, 比如 glClear, glBegin, glVertex3f 和 glEnd.
OpenGL技术之摆脱GLUT的束缚 详细讲解如何使用自己创建的窗口来让OpenGL进行绘制 阅读详情

相关推荐

【OpenGL】使用MinGW下gcc编译OpenGL的glut和freeglut库

环境 Window10、gcc version 6.3.0 (MinGW.org GCC-6.3.0-1)、GLUT库(下载地址:http://www.opengl.org/resources/libraries/glut/glutdlls37beta.zip) 步骤 1~4. 参考【1】 5. 将glut32.dll放入 C:\Windows\SysWOW64 目的是为了防止win10操作系统中找不到glut32.dll,无法继续执行代码的问题。原因可能与平台位数有关(我将第四步去掉,也能正常运行。是

qq_43478653的博客 2639

opengl-glut(内含总结的学习资源)

本文较长(其实主要是贴的代码比较长),可每天学一部分,结合专栏,官方网址学习,个人仅仅记个笔记,讲的并不深入,真正的理解还是需要多方面查资料一步步啃啊,一起努力把。main()函数中的几个glut前缀函数是OpenGL提供的工具库,我们关注的是display()函数,它是我们真正绘图的地方。在画线操作时,首先绘。如果启动点画线操作,线上的点由 pattern 决定是否绘制,即从 pattern 的最低位开始,00111111,结果为,6 个像素点画,10 个像素点不画,12 个像素点画,4 个像素点不画。

2303_77480410的博客 2965

windows下安装opengl的glut库(转)

 windows下安装opengl的glut库 GLUT不是OpenGL所必须的,但它会给我们的学习带来一定的方便,推荐安装。 Windows环境下的GLUT下载地址:(大小约为150k) http://www.opengl.org/resources/libraries/glut/glutdlls37beta.zip 无法从以上地址下载的话请使用下面的连接: http://upload.

kpsbnc的专栏 1678

OPENGL学习(四)GLUT三维图像绘制

对于三维目标来说,最主要的就是有坐标变换问题,也就是说有视角问题。下面这个程序只是我们看的方向一直在转,不是物体真的在转。透视函数参数图下所示。

qq_21043585的博客 6502

OpenGL基础:glut处理鼠标事件(含滚轮输入)

检测鼠标单击  要想在OpenGL中处理鼠标事件非常的方便,GLUT已经为我们的注册好了函数,只要我们提供一个方法。使用函数glutMouseFunc,就可以帮我们注册我们的函数,这样当发生鼠标事件时就会自动调用我们的方法。函数的原型是:void glutMouseFunc(void(*func)(int button,int state,int x,int y)); 参数: func:处理

聪少的博客 3万+

C++ OpenGL GLUT颜色选择菜单实现

本文还有配套的精品资源,点击获取 简介:OpenGL是一个用于创建2D和3D图形的图形库,而GLUT库则是一个辅助库,提供了一系列函数帮助开发快速搭建图形用户界面,包括菜单功能。本项目展示了如何利用GLUT在C++和OpenGL环境下实现一个图形颜色选择功能,通过菜单项选择改变图形颜色,并涉及到了颜色的处理,包括RGB值的设置和颜色的混合算法。项目中实现了创建窗口、添加菜单...

weixin_32999557的博客 1682

【OpenGL开发】glut和freeglut下载及配置

目录 1、glut下载 2、freeglut下载 3、代码示例 后续 1、glut下载 OpenGL工具库 OpenGL Utility Toolkit,包含大约30多个函数,函数名前缀为glut。 glut是不依赖于窗口平台的OpenGL工具包,由Mark KLilgrad在SGI编写(现在在Nvidia),目的是隐藏不同窗口平台API的复杂度。 函数以glut开头,它们作为aux库功能更强的替代品,提供更为复杂的绘制功能,此函数由glut.dll来负责解释执行。由于glut中的窗口管理函数

爱看书的小沐 2万+

OpenGL GLUT函数深入解析与应用

OpenGL(Open Graphics Library)是一种强大的跨语言、跨平台的API,用于渲染2D和3D矢量图形。它几乎应用于所有涉及计算机图形的领域,从CAD软件到影视特效,再到虚拟现实和移动游戏。OpenGL的核心是提供一种编程接口,让开发者能够直接控制图形硬件,实现高度定制化的图形渲染功能。而GLUT库,全称为OpenGL Utility Toolkit,是OpenGL的辅助库,它为开发者提供了一系列便捷的函数接口,用于简化OpenGL应用程序的开发。

weixin_30205153的博客 1026

[OpenGL笔记]glut入门(1)

鼠标事件、glutMainLoop、帧缓冲、glutBitmapCharacter、glutPostRedisplay、onReshape

qq_39377889的博客 1961

GLUT和OpenGL安装文件详解

OpenGL图形库自1992年首次发布以来,已经成为行业标准的高性能图形编程接口。它广泛应用于计算机图形领域,支持从简单2D图形绘制到复杂3D渲染场景,为开发者提供了一套丰富的函数集,使得应用程序能够绘制出令人震撼的视觉效果。在本章节中,我们将首先回顾OpenGL的历史,介绍其背后的开放标准组织和核心设计哲学。接下来,我们会详细探讨OpenGL的关键特性,包括其抽象层次、状态机管理机制以及与硬件无关的编程模型等。

weixin_28787801的博客 712

5分钟搞定!用ZLMediaKit搭建GB28181视频监控系统(含避坑指南)

本文提供了一份基于ZLMediaKit搭建GB28181视频监控系统的实战指南。文章详细介绍了从环境准备、核心组件(ZLMediaKit与SIP服务器)部署、摄像头配置到内外网穿透的完整流程,并重点分享了设备ID配置、防火墙设置等关键避坑经验,帮助开发者快速构建稳定可控的监控平台。

apple5的专栏 1084

学习OpenGL-番外-glut入门(vs2022)(一)

glut的版本自1998年后就没有更新了,但是其窗口实现相比glfw简便许多。本文主要为文档的学习笔记。

ntmbdwp302159902的博客 2560

Grafana企业版vs开源版:从安装到插件管理的完整对比实测(含离线部署技巧)

本文深入对比Grafana企业版与开源版在安装流程、插件管理和功能限制等方面的差异,特别针对离线部署场景提供实用技巧。通过实测数据源支持、权限管理等核心功能,帮助企业用户做出明智选择,同时详细介绍离线安装和插件签名验证等关键操作。

weixin_29313817的博客 104

OpenGL教程——GLUT初始化

转自:http://blog.youkuaiyun.com/xie_zi/article/details/1911452 在这个部分我们将在我们的程序里建立一个main函数,这个main函数将完成必须的初始化和开启事件处理循环。所有的GLUT函数都有glut前缀并且那些完成一些初始化的函数有glutInit前缀。你首先要做的是调用函数glutInit()。 Void glutInit(int*...

deniece1的博客 3652

IMU预积分【SLAM】

预积分的推导过程比较多,所以这里只记录关键结论。 其实这些公式不太好记忆,因为预积分推导过程的想法来源很巧妙,无法看出物理意义。一切推导的来源: 最好记忆的旋转相对运动量: △Rij≐RiTRj=∏k=ij−1Exp((ω~k−bg,k−ηgd,k)△t)\triangle R_{ij} \doteq R_{i}^{T}R_{j} = \prod_{k=i}^{j-1}Exp((\tilde{\omega}_{k}-b_{g,k}-\eta_{gd,k})\triangle t) △Rij​≐RiT​Rj​

Tong_1024_的博客 1370

dxf-viewer 查看器

dxf-viewer SDK 的示例,它是一个基于 Three.js 和 Vue3 构建的基于 WebGL 的 BIM 模型查看器。它用于查看 DWG/DXF/PDF 文件。面积测量 - 角度测量 -标记。

qq_25547755的博客 866

【小沐学OpenGL】Ubuntu环境下glut的安装和使用

OpenGL作为图形界的工业标准,其仅仅定义了一组2D和3D图形接口API,而对于窗口管理、IO消息响应等并没有规定。也就是说,OpenGL依赖各平台提供用于渲染的context以及具体实现方式,而各平台提供的实现不尽相同。这些实现主要有:Windows平台下的WGL、Linux下的Mesa/GLX、Mac OS X下的Cocoa/NSGL,以及跨平台的GLUT、GLFW、SDL等等。OpenGL工具库 OpenGL Utility Toolkit,包含大约30多个函数,函数名前缀为glut。

爱看书的小沐 2904

嵌入式开发环境Vscode开发STM32单片机程序

STM32单片机非常强大,大多数教程都是使用 keil 编译器,keil 是收费的而 gcc 是开源免费的。这里介绍一些使用 gcc +开发单片机程序的经验。(这里不解释 gcc 是什么)。

嵌入式技术开发 1843

OpenGL---GLUT教程(一) GLUT简介,体系

                                            GLUT 教程                                            体系 GLUT 代表OpenGL Utility Tookit。Mark J.Kilgard 为了使OpenGL应用程序结构能够真正独立于窗口系统构思了GLUT库。感谢GLUT,使我们可以写程序

xie_zi的专栏 2万+

【云原生之Docker实战】使用docker部署Monica个人开源CRM系统

【云原生之Docker实战】使用docker部署Monica个人开源CRM系统

jks212454的博客 2386

Hermes 教程 05:多 Agent 编排

本文介绍了Hermes v0.13.0中的四种多Agent协作模式:1)delegate_task快速子任务模式,适合2-3个独立并行任务;2)spawn子Agent模式,实现零成本并行多步流水线;3)tmux交互子Agent模式,支持长期自主任务;4)全新Kanban看板系统,提供持久化AI团队协作框架。各模式在隔离级别、时长、工具访问和适用场景上存在差异,其中spawn模式通过独立上下文窗口实现零上下文成本。文章详细说明了每种模式的使用方法、限制条件和典型应用场景,并提供了具体代码示例和可视化流程图。K

程序猿_三产 537

OpenGL 中常用的 GLUT 函数库

OpenGL 中常用的 GLUT 函数库 一、初始化 void glutInit(int* argc,char** argv) 这个函数用来初始化GLUT库。对应 main 函数的形式应是: int main(int argc,char* argv[]); 这个函数从 main 函数获取其两个参数。 1 void glutInitWindowSize(int width,in...

种花家的奋斗兔的博客 1068

25 - GRACE Mascon数据缺失月份数据插值

本篇基于文章的相关内容和文章公开的奇异谱分析(SSA)插值算法程序包,对grace Mascon数据种缺失的月份进行 插值 ,总结了使用程序包的相关过程,可以将该程序应用到其他数据处理插值计算中。

weixin_43339605的博客 1843

【OpenGL】GLUT函数说明

综合了GLUT库相关函数,及其功能说明。

子建莫敌 467

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

【OpenGL开发】GLUT/freeglut 是什么? OpenGL 和它们有什么关系?

GLUT/freeglut 是什么? OpenGL 和它们有什么关系? OpenGL只是一个标准,它的实现一般自带在操作系统里,只要确保显卡驱动足够新就可以使用。如果需要在程序里直接使用OpenGL,会有很多非常恶心的预备工作要做,而且可能还要专门为平台的差异写一些代码。要跳过这些工作,可以用一个utility库,直接使用它提供的函数,就不用操心那些细节了。这样的库新一点的有GLEW,因为开

ZhangPY的专栏 6573

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

windows下安装opengl的glut库

GLUT不是OpenGL所必须的,但它会给我们的学习带来一定的方便,推荐安装。 Windows环境下的GLUT下载地址:(大小约为150k) http://www.opengl.org/resources/libraries/glut/glutdlls37beta.zip 无法从以上地址下载的话请使用下面的连接: http://upload.programfan.com/upfile/200607

popkiler的专栏 2万+
上一篇: openGL坐标变换
下一篇: Linux下openGL编程
Aiden@semidrive
博客等级 码龄14年 110粉丝 58原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值