回答
我不知道有什么好的指导,但我可以让你快速摘要
我会假设你如果不这样做已经很熟悉着色器,顶点缓冲区等的基本知识,我建议你读了有关着色器第一导而是因为所有的OpenGL 3是基于着色器
在初始化的用法:
创建和使用
glGenBuffers
,glBindBuffer(GL_ARRAY_BUFFER, bufferID)
和填充顶点缓冲区同为索引缓冲区,除非你使用
GL_ELEMENT_ARRAY_BUFFER
,而不是GL_ARRAY_BUFFER
就像你在OpenGL的早期版本中确实做到了创建纹理(
glGenTextures
,glBindTexture
,glTexImage2D
)使用创建着色器
glCreateShader
,使用glShaderSource
设置他们的GLSL源代码,并用glCompileShader
编译它们;您可以检查它是否与glGetShaderiv(shader, GL_COMPILE_STATUS, &out)
成功,并使用glGetShaderInfoLog
创建程序检索错误信息(即一组着色器结合在一起,通常是一个顶点着色器和一个片段着色器)与
glCreateProgram
,然后绑定要使用着色器glAttachShader
,然后链接该程序使用glLinkProgram
;就像着色器可以检查与glGetProgram
和glGetProgramInfoLog
连接成功,当你想画:
绑定使用
glBindBuffer
带参数GL_ARRAY_BUFFER
和GL_ELEMENT_ARRAY_BUFFER
分别- 顶点和索引缓冲区
绑定程序与
glUseProgram
现在,对于着色器中的每个变量变量,必须调用
glVertexAttribPointer
,其语法与传统的glVertexPointer
,glColorPointer
等相似函数,除了它的第一个参数,它是变化的标识符;此标识符可通过在链接的程序上调用glGetAttribLocation
来检索对于着色器中的每个统一变量,必须致电
glUniform
;它的第一个参数是统一变量的位置(也是一种标识符),您可以通过调用glGetUniformLocation
(警告:如果您有一个名为“a”的数组,您必须使用“a [0] “)对于要绑定每个纹理,你必须调用
glActiveTexture
与GL_TEXTUREi
(i是对每个纹理不同),然后glBindTexture
然后均匀的值设置为我呼叫
glDrawElements
Thi s是你必须做的基本事情。当然,还有其他的东西,比如顶点数组对象,统一的缓冲区等等,但它们仅仅用于优化目的。
其他域像剔除,混合,视口等仍然大部分与旧版本的OpenGL相同
我也建议你研究this demo program(它使用顶点数组对象)。最有趣的文件是main.cpp中
希望这可以帮助
- 1. OpenGL 3.2核心配置文件glLineWidth
- 2. OpenGL 3.2编程指南?
- 3. 仅强制OpenGL核心配置文件
- 4. NSOpenGLView与OpenGL 3.2核心
- 5. OpenSceneGraph使用核心配置文件吗?
- 6. PyQt4 OpenGL:GL核心配置文件错误
- 7. 使用核心配置文件时OpenGL纹理问题
- 8. Android OpenGL指南针
- 9. 配置.NET核心
- 10. 在OSX上的核心配置文件中获得可用的opengl扩展
- 11. 的OpenGL(核心配置文件)模型的三角形错渲染
- 12. PyQT5 OpenGL 4.1核心配置文件 - 无效的帧缓冲区操作 - Mac OS
- 13. PHP核心文件位置
- 14. 什么扩展成为OpenGL ES 3.2核心的一部分
- 15. 替换为核心配置文件中的GL_LUMINANCE_ALPHA?
- 16. 用F#配置EF核心#
- 17. 配置与ASP.NET核心
- 18. 如何从C++核心指南跳棋检查路径中排除文件夹?
- 19. 有没有关于Unix配置文件的指南
- 20. Linux内核加密指南
- 21. 的Kohana 3.2不加载配置文件
- 22. 核心动画还是opengl?
- 23. 核心数据和iOS数据存储指南
- 24. 运行核心风格指南时出错
- 25. 如何将Content Profile模块转换回核心配置文件?
- 26. 参考appsettings.json另一个JSON文件ASP.NET核心配置
- 27. Azure AD B2C与ASP.NET核心 - 无法去编辑配置文件
- 28. 使用核心数据创建用户配置文件/帐户
- 29. 核心图:doxygen配置文件不存在
- 30. MVC 2.0的核心,如何通过配置使用appSettings.json文件
一个更好的现代的OpenGL(核心3.2+)“的简短总结:”我在一段时间看到的。从1.x/2.x开始,尝试通过更新的教程获得最新信息可能会更有意义。作为思维导图很好。 – Aktau 2013-08-28 14:51:39
绊倒我的一件事是,你必须使用VAO和VBO来绘制。否则,在调用glVertexAttribPointer时会得到GL_INVALID_OPERATION。至少在Mac OS X上就是这种情况。 – YRH 2013-10-25 12:40:35