`
爱迪生的小屋
  • 浏览: 36389 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

OpenGL开发笔记

 
阅读更多



 

1. glViewport,glOrgho/gluPerspective,在投影矩阵GL_PROJECTION中使用,gluLookAt在视图矩阵GL_MODELVIEW中使用

2. gluPerspective的近景near必需大于0,不能等于0

3. 绘制组件的时候以(0,0,0)为基点,调用子函数的时候用glPushMatrix()和glPopMatrix()包装后再平移旋转,这样的方法使用起来比较方便

3. 影响显示效果的功能:颜色Color-最基本的属性;混合Blend-通过alpha通道,支持透明和半透明;帖图Texture-如果是32位需要透明效果的贴图需要开启Blend;光照Light-与Material属性配合使用,开启后颜色属性失效,最终颜色由光照颜色和材质反射颜色共同决定

4. 如果开启Blend并且要使用透明效果,即使已开启了深度检测,仍然要手工遵循由深到浅的顺序,否则透明效果会不正确

5. glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE):GL_MODULATE代表两个颜色相乘,用于贴图和光照混合,如果是GL_REPLACE则完全不受光照影响

6. 如果两个面重合,OpenGL不同的实现会有不同的处理,很有可能两个面按随机顺序绘制,这种情况能免则免

7. 曲面的法线是对顶点进行设置的,系统会自动根据顶点法线计算中间点法线达到平滑过渡的效果,所以顶点法线的计算因以实体来计算,如圆球的法线为球心到顶点的连线,而不是三个顶点的向量的外积,如果用外积,反而会另画出来的球不平滑。

8. 绘制长短轴为a,b的椭圆。顶点公式,x轴对应a,y轴对应b,顶点到圆心距离r,角度为q,r = a*b / sqrt((b*cos(q)^2 + (a * sin(q))^2), x = r*cos(q), y = r*sin(q);法线公式,法线角度n = rctg(- b / a * x / sqrt(a^2 - x^2)) + PI / 2,如果y < 0则n = -n,如果x = a,则n = 0,如果x = -a,则n = PI

8. glTranslate平移后法线不变,glRotate旋转后法线跟着旋转,两者都能保证法线正确,但是glScale缩放后法线不变,在x,y,z同比缩放时法线正确,如果不同比缩放,法线会错误。

9. windows窗口/全屏切换,如果把hWnd销毁/重建,材质信息会丢失,需要重新读取。可以采取SetWindowLong(hWnd, GWL_STYLE, WS_POPUP或者WS_OVERLAPPEDWINDOW)和SetWindowPos动态调整窗口大小和边框,通过无框窗口来模拟全屏效果。

  • 大小: 438.6 KB
0
2
分享到:
评论

相关推荐

    android OpenGL学习笔记(一)

    在Android开发环境中,我们通常使用Java或Kotlin通过Android SDK与OpenGL ES交互。为了开始一个OpenGL ES项目,你需要设置一个Android工程,其中包括以下几个关键文件: 1. **AndroidManifest.xml** - 这是应用程序...

    OpenGL 学习笔记整理

    OpenGL 是一种广泛应用的图形库,...了解其核心概念,如坐标系、渲染管线、着色器和优化技巧,对于进行图形编程和游戏开发至关重要。学习OpenGL不仅涉及理论知识,还需要实践操作,通过实际项目来掌握这些概念和技巧。

    code_opengl学习笔记3-1-在3D中绘制点

    在本节“code_opengl学习笔记3-1-在3D中绘制点”中,我们将深入探讨如何使用OpenGL来在三维空间中绘制点,这是构建更复杂图形的基础。 在OpenGL中,点是最基本的图元之一,它不具有长度、宽度或深度,但当在屏幕上...

    OpenGL初学笔记

    OpenGL初学笔记主要针对的是那些刚开始接触图形编程的开发者,尤其适合使用Visual C++ 6.0作为开发环境的初学者。OpenGL是一个强大的、跨平台的图形库,它允许程序员创建复杂的2D和3D图形应用程序。Visual C++ 6.0是...

    OpenGL超级宝典 笔记16-18 相关代码(暂时不包含.exe)

    OpenGL超级宝典 笔记16-18完整的代码,作为笔记16-18的补充。包括Camera_ra.cpp和Camera_ra.h和vec34_mat4.cpp和vec34_mat4.h和3d.cpp,共5个文件

    【Visual C++】游戏开发笔记十九 DirectX与OpenGL的博弈.docx

    【Visual C++】游戏开发笔记十九:DirectX与OpenGL的博弈 在游戏开发领域,DirectX和OpenGL是两个至关重要的图形API,它们分别代表了微软和开放源代码社区的解决方案。本文将深入探讨两者的特点、优劣以及在不同...

    OpenGL超级宝典 笔记21 相关代码

    OpenGL是计算机图形学领域广泛应用的一种编程接口,它允许开发者创建复杂的3D图形和视觉效果。在OpenGL编程中,矩阵操作是至关重要的,因为...理解并熟练掌握这些概念和实践,对于开发高性能的OpenGL应用程序至关重要。

    Opengl学习笔记

    ### OpenGL学习笔记关键知识点 #### 一、OpenGL坐标系与绘图函数 - **坐标系定义**:在OpenGL中,坐标系定义了三维空间中物体的位置。X坐标轴从左至右,Y坐标轴从下至上,Z坐标轴从观察者的视角由近及远(即从里至...

    OPENGL ES 3.0编程指南 原书第2版 中文版 笔记1

    OpenGL ES 3.0 是移动设备和嵌入式系统上用于图形渲染的开放标准,它在OpenGL的基础上进行了优化,特别适合资源有限的环境。...在实际开发中,还需要考虑错误处理、资源管理、性能优化等方面的内容。

    Java OpenGL(JOGL)学习笔记,含代码

    Java OpenGL(JOGL)学习笔记 在学习 JOGL 时,我们需要了解图形显示器是如何工作的。图形显示器是一个由许多像素点组成的绘图区域,图形系统的核心是一个魔法画笔,这支画笔能以非常快的速度移动到一个确定的像素...

    OpenGL学习笔记

    ### OpenGL学习笔记知识点详解 #### 一、OpenGL简介与安装准备 OpenGL(Open Graphics Library)是一种用于渲染2D、3D矢量图形的跨语言、跨平台的应用程序编程接口(API)。它被广泛应用于游戏开发、图形软件以及...

    【Visual C++】游戏开发笔记十九 DirectX与OpenGL的博弈.pdf

    【OpenGL】与【DirectX】是游戏开发中的两个重要图形API,它们在C++游戏开发中占据着核心地位。OpenGL是一个开放标准,专注于专业图形应用和3D游戏,由OpenGL架构委员会维护,主要由3Dlabs推动发展。与之相比,...

    opengl-es.zip_opengl_opengl es

    它主要用于处理2D和3D图形渲染,是开发游戏、图形应用和增强现实应用的核心技术。OpenGL ES提供了一个跨平台的编程接口,允许开发者通过编程来创建复杂的图形效果。 在“opengl es.zip”这个压缩包中,包含的...

    openGL入门参考资料

    OpenGL是一个跨语言、跨平台的编程接口,用于渲染2D、3D矢量图形,广泛应用于游戏开发、科学可视化、工程设计等领域。 在配合的文章《OpenGL学习笔记——JNI篇》中,作者通过JNI(Java Native Interface)来演示...

    android_OpenGL_ES_笔记_4-EGL

    EGL (Embedded Graphics Library) 是一个关键的图形库,它在Android系统中扮演着连接OpenGL ES(OpenGL for Embedded Systems)与本地...理解并熟练掌握EGL的工作原理和API对于开发高性能的OpenGL ES应用程序至关重要。

    OpenGL版本检测工具

    OpenGL是跨语言、跨平台的图形编程接口,广泛应用于游戏开发、科学可视化、工业设计等领域。理解系统上的OpenGL版本及其相关组件对于确保软件兼容性和优化性能至关重要。 该工具的核心功能在于获取以下关键信息: ...

    OpenGLES20学习笔记

    OpenGL ES 2.0 是移动设备上的一个图形库标准,用于在智能手机、平板电脑等设备上进行3D和2D图形渲染。它基于OpenGL规范,但...同时,结合规范文档、书籍和其他参考资料,深入学习和实践将有助于进一步提升开发技能。

    openGL头文件

    总的来说,这个压缩包提供了一个基础的OpenGL开发环境,包括GLUT工具包,这对于初学者了解和学习OpenGL非常有帮助。开发者可以利用这些文件创建并运行简单的OpenGL程序,逐步深入到复杂的3D图形编程。

    C++游戏开发笔记全集

    总的来说,"C++游戏开发笔记全集"涵盖了从C++基础到高级游戏开发技术的广泛内容。通过学习这个笔记,你将能够深入理解游戏开发的各个方面,并具备开发自己游戏的能力。无论是独立游戏开发者还是专业团队的一员,这些...

Global site tag (gtag.js) - Google Analytics