OpenGL学习笔记以及其它学习思考
最近是很多天都没有写博客了,这是一个很不好的习惯。每天学习的内容如果不进行总结的话,基本上是全都忘掉了。所以还是得坚持写博客。
- C#编程基础回顾
三个关键字:
- new:(1):创建对象。 在堆中开辟一块空间(对象属于引用类型 所以是在堆中开辟空间)、在开辟的空间中创建对象、调用类的无参的构造函数
(2):完全隐藏父类的同名函数 意思就是在继承中 子类和父类的方法同名的时候 需要完全隐藏父类的方法时候使用
2. this:(1):指代当前类的对象 特别是用在构造函数中 this.Name=name; 这里的this就是这个意思
(2):继承自己的构造函数 (一般继承最全的那个构造函数)
3.base: (1):继承父类的构造函数 用于继承的时候
界面设计方面: (1):菜单栏有 数据资源、卫星资源、服务资源、插件资源、专题空间、全球目标、资源搜索
(2):打开、影像模式、地图模式、海图模式、三维地形、地名管理、基础数据设置、自动隐藏、全屏,帮助、登录、退出
(3):工具组包含:面积量测工具、文字情报引接与组织关联、手动校正、影像数据管理于应用、距离测量工具、空间可视域分析、全球基础影像下载
(4):标题栏WPF、全球目标、显示疆界线、登陆、气象水文数据显示、新天空盒。
不清楚的地方: 全屏显示功能(也就是隐藏了工具条,将最上面的logo栏去掉)、工具组是哪一个空间来实现的?、如果实现鼠标不在控件上面就将控件的透明度降低。
OpenGL: 先来了解一下函数。学习了这么久的OpenGL,感觉就是在知道OpenGL的渲染流程以及各种小细节、然后就是学习各种函数
1:从缓存对象中回读数据:glGetBUfferSubData
2:直接访问缓存中数据:glMapBuffer(GLenum target,GLenum access)
3:执行解除映射操作:glUmMapBuffer()
4:更精确的设置访问模式:glMapBufferRange(GLenum target,GLintptr offset, GLsizeiptr length,GLbitfiled access);
5:抛弃缓存对象中的部分或者数据:glinvalidateBufferData() glinvalidateBufferSubData()
6:顶点规范:glVertxAttribPointer(GLuint index,GLint size,GLenum type, GLboolean normalized, GLsizei stide, const GLvoid*pointer);初始化的属性指针索引传入这个函数。
7:整型顶点属性:glVertexAttribIPointer() 它不会执行自动转换到浮点数的操作
8:双精度顶点属性:glVertexAttribLPointer() 它的type必须为DOUBLE
9:顶点属性的压缩格式:????????
10:静态顶点属性的规范(难理解) 每个属性的顶点属性可以通过glVertexAttrib*()系列参数进行设置
11:OpenGL的绘制命令 :包括两部分
- 1:索引形式 其绑定的数据类型 GL_ELEMENT_ARRAY_BUFFER 最基本的索引形式的绘制命令 glDrawElements(GLenum mode ,GLsizei count, GLenum type,Const GLvoid* indices) 使用count个元素来定义一系列几何图元,而元素的索引值保存在一个绑定大到 GL_ELEMENT_ARRAY_BUFFER的缓存中。indices定义了元素数组缓存中的偏移地址。此函数会从当前启用的顶点属性数组中读取顶点的信息,然后使用它们来构建mode指定的图元类型。 使用了元素数组缓存中的索引数据来索引各个顶点属性数组
- 2:非索引形式: 基本的绘制命令:glDrawArrays() 直接将缓存对象中的顶点属性按照自身的排列顺序,直接取出并使用。