1.OpenGL基础-C++|(一) 安装与使用
2.å¦ä½Pythonåä¸ä¸ªå®åAPP
3.glewglew for Ada
4.OpenGL ES glad 下载和使用
5.第一个OpenGL程序
OpenGL基础-C++|(一) 安装与使用
OpenGL基础-C++安装与使用指南
要开始在C++中使用OpenGL,源码首先要对它有一个基本了解。编译参考书籍:《计算机图形学编程(使用OpenGL和C++)(第2版)》。源码1. 安装和配置
在Visual Studio 环境中进行安装与配置:1.2 GLFW的编译准备
从官方下载GLFW源代码,链接在此处。源码
使用CMake编译源码,编译抖音裂变推广系统源码生成 GLFW.sln 文件。源码
编译为位应用程序,编译完成后你会得到lib静态库文件和include文件夹。源码
1.3 GLEW的编译准备
从指定地址获取GLEW二进制文件,包含库文件和头文件。源码1.4 GLM的编译准备
从提供的链接下载GLM压缩包,解压后即可使用。源码1.5 SOIL2的编译准备
在make/windows文件夹中,打开SOIL2.sln,源码选择x环境生成静态库。1.6 配置文件结构
创建包含lib和include子文件夹的文件夹,存放这些库和头文件。1.7 在VS中创建项目
在VS中,源码变成反码通过新建项目模板创建OpenGL C++项目,选择OpenGL模板即可。在项目创建时,请确保glew.dll文件放在项目目录下。1.8 测试配置:创建窗口
一个简单的测试代码,用于确认配置是否正确:// 你的代码片段
运行这段代码,若显示成功,说明安装和配置都已完成。å¦ä½Pythonåä¸ä¸ªå®åAPP
åè¨ï¼ç¨Pythonåå®åAPPè¯å®ä¸æ¯æ好çéæ©ï¼ä½æ¯è¯å®æ¯ä¸ä¸ªå¾å·æçéæ©ï¼èä¸å®å¨ä¸æ³å¦ä¹ Javaï¼åè ï¼å°±ç¼ç¨èè¨å·²ç»ä¼çå°±Pythonä¸Golang(注ï¼Pythonï¼Golangæ°´å¹³é½ä¸è¬)ï¼é£ä¹ä¹ Googleäºä¸ä¸Pythonåå®åçAPPçå¯è½æ§ï¼è¿çè¡ãæ¢ç¶è¦å个APPï¼é£ä¹æ»å¾è¦æ个æ³æ³å§ã
å ¶å®ç¬è æ³å两个APPæ¥çï¼ä¸ä¸ªæ¯èªå·±åç好ç©çï¼ä¸ä¸ªæ¯å ³äºè¿ç»´çã
å ³äºè¿ç»´çAPPï¼è®¾è®¡åºè¯¥å¦ä¸
å¯è½é¿è¿æ ·ï¼
ç¶å设计åºè¯¥æ¯è¿æ ·ï¼
å¦æè§å¾å¯è¡çè¯ï¼è¯è®ºçè¨ä¸ä¸ä½ è§å¾åºè¯¥åè¿è¿ä¸ªAPPçè¿ç»´å¸¸ç¨å½ä»¤å§^_^ï¼ç¬è ææ¶æ³å°çæ¯top,free -m,df âh,uptime,iftop,iotop,å¦ææä»ä¹å¥½çæ³æ³å°±ç ç çç ¸è¿æ¥å§ï¼ç¬è å°æ¶åºè¯¥ä¹ä¼æè¿ä¸ªåæä¸ä¸ªé¡¹ç®æ¾å°githubä¸ï¼å¤§å®¶ä¸èµ·ç¨åï¼å¼æºææ¯çéï¼ååã
好å§ï¼è¿å ¥æ£é¢ã
æ们使ç¨kivyå¼åå®åAPPï¼Kivyæ¯ä¸å¥ä¸é¨ç¨äºè·¨å¹³å°å¿«éåºç¨å¼åçå¼æºæ¡æ¶ï¼ä½¿ç¨PythonåCythonç¼åï¼å¯¹äºå¤ç¹è§¦æ§æçé常è¯å¥½çæ¯æï¼ä¸ä» è½è®©å¼åè å¿«éå®æç®æ´ç交äºåå设计ï¼è¿æ¯æ代ç éç¨åé¨ç½²ï¼ç»å¯¹æ¯ä¸æ¬¾é¢è®©äººæè³çNUIæ¡æ¶ã
å 为跨平å°çï¼æ以åªåä¸é代ç ï¼å°±å¯ä»¥åæ¶çæå®ååIOSçAPPï¼å¾é ·å§ã
æ¬æä¼å¸¦å¤§å®¶åä¸ä¸ªHello world并ç§ä¸ç§Pythonççç代ç
kivyå®è£
ç¯å¢è¯´æï¼ç¬è å¨ç¨çæ¯Python2.7.
è¿éä» ä»ç»windowså¹³å°å®è£
æ´æ°pip,setuptools
python -m pip install --upgrade pip wheel setuptools
ç¶åæ¯å®è£ æéè¦çä¾èµ
python -m pip install docutils pygmentspypiwin kivy.deps.sdl2 kivy.deps.glew \
kivy.deps.gstreamer --extra-index-url ple/
å¼å¾æ³¨æçæ¯ï¼ä¸é¢çå®åéè¦è®¿é®Googleï¼æ以请èªå¤æ¢¯åï¼èä¸kivy.deps.gstreamerè¿ä¸ªå æ¯è¾å¤§(MB)ï¼å¯ä»¥åç¬æ¬å°å®è£ ï¼h
ç¶åå°±æ¯å®è£ kivyäº
python -m pip install kivy
è³æ¤ï¼å®è£ 就已ç»å®æ¯äºï¼å¼å¾æ³¨æçæ¯ä½ç³»ç»æ²¡æå¼å¯èæåæ¯æï¼å¨å¯¼å ¥kivyçæ¶åä¼æ¥éï¼å¦ææ¯ä½ç³»ç»å°±è®¾ç½®ä¸ä¸æºå¨çBIOSï¼å¼å¯èæåæ¯æå§ã
注ï¼è¿éåªæ¯kivyçè¿è¡ç¯å¢ï¼è¿æ ·æå°±è½ç´æ¥å¨windowsæºå¨ä¸ç´æ¥è°è¯äºï¼æä¹å°ä»£ç ç¼è¯æAPKæ件æ们ä¼å¨åé¢è®²å°ã
å¦ækivyå¨pythonä¸åºè¯¥å°±è½å¯¼å ¥äºã
æç §ä¸çæ¯ä¾ï¼æ们âhelloâä¸ä¸å§ã
æ°å»ºä¸ä¸ª.pyæ件
from kivy.app import App
from kivy.uix.button importButton
class TestApp(App):
def build(self):
return Button(text='Hello,kivy')
TestApp().run()
è¿è¡ï¼
ç¶åä¼å¼¹åºä¸ä¸ªæ¡ï¼å¤§æ¦å¦ä¸ï¼ç¹å»âhello,kivyâä¼åé¢è²
ç¹å»çªå£å¹¶æâF1âä¼è¿ä¸ªçªå£çä¸äºå±æ§
ç¶åæ们åè¿å¤´çä¸ç代ç ã
##å¯¼å ¥Appï¼ç¶å让TestAppè¿ä¸ªç±»ç»§æ¿
from kivy.app import App
##å¯¼å ¥ä¸ä¸ªButton,è¿ç»´æè¿ä¸ªbuttonï¼å½ä½ ç¹å»çæ¶åæä¼ææååº
from kivy.uix.button importButton
###å®ä¹ç±»ï¼ååå¿ é¡»æ¯xxxApp
class TestApp(App):
###buildä¸ä¸ªButton
def build(self):
###è¿åä¸ä¸ªButton,æåå 容æ¯âHello,kivyâ
return Button(text='Hello,kivy')
##è¿è¡,å 为继æ¿äºAppï¼æ以ææçrunè¿ä¸ªæ¹æ³
TestApp().run()
ä¸é¢å°±æ¯æ们çHelloäº
å¨windowsä¸è¿è¡å½ç¶æ²¡æä»ä¹å¤ªå¤§çæä¹ï¼æä¹å¨å®åææºä¸è¿è¡ææ¯æ们æ³è¦çï¼
è¿æ¶æ们éè¦ä¸ä¸ªç¼è¯ç¯å¢ã
å®æ¹è¯´æçç¯å¢ï¼å¦ä¸ï¼
Youâll need:
A linux computer or a virtual machine
Java
Python 2.7 (not 2.6.)
Jinja2 (python module)
Apache ant
Android SDK
è½ç¶å®æ¹æä¾äºä¸ä¸ªä¼¼ä¹è¿ä¸éçèææºéåï¼ä½æ¯è¿æ¯æå¾å¤å 容éè¦ç¿»åºå»ï¼æ以ç¬è å¨
å½ç¶ä½ ä¹å¯ä»¥ä¸è½½å®æ¹éåï¼å 为第ä¸æ¬¡ç¼è¯éè¦å»å½å¤ä¸ä¸å¤§å ä¸è¥¿ï¼æ以请èªå¤æ¢¯åã
Virtual Machine
A Virtual Machine with Android SDK and NDK and all otherpre-requisites pre installed to ease apk generation:
Kivy Buildozer VM
Or select the Torrent
å¨ç¬è æä¾çéåéï¼æ¡é¢ä¸æä¸ä¸ªdev_andï¼åªè¦å°ä¸é¢åç代ç ï¼æ¾å ¥è¿ä¸ªæ件夹å³å¯(å½ç¶ä¹å¯ä»¥å¨å ¶ä»ç®å½ï¼åé¢ä¼è®²å°)ã
cd Desktop/dev_and/
åå§åä¼å¨å½åç®å½çæä¸ä¸ªbuildozer.specæ件 ç¨äºé ç½®çæçapkç¸å ³ä¿¡æ¯
buildozer init
ä¿®æ¹buildozer.specæ件
vi buildozer.spec
è³å°ä¿®æ¹ä¸é¢ä¸é¡¹
# (str) Title of your application
title = helloworld
# (str) Package name
package.name = helloapp
# (str) Package domain (needed for android/ios packaging)
package.domain = youer.com
ç¶å注é
# (str) Application versioning (method 1)
#version.regex = __version__ = ['"](.*)['"]
#version.filename = %(source.dir)s/main.py
ä¸é¢è¿è¡æ¹ä¸ºé注é
version = 1.2.
æåæ们çææ们éè¦çapkæ件
buildozer -v android debug
buildozerå½ä»¤ä¼å¨å½åæ件夹å建ä¸ä¸ªbinï¼è¯¥æ件夹éé¢ææ们æ³è¦çapkæ件
helloapp-1.2.0-debug.apk
å®è£ 以ååºè¯¥æ¯è¿æ ·
è¯è¯´å¨ç¼è¯çæ¶åå¯è½åºç°ç©ºé´ä¸è¶³çæ åµï¼æ ¹æ®èææºçä¸å(vmwareævirtualbox)èªè¡æ©å®¹å§ã
æåæ们æ¥ç§ç§ç®æçPythonå¼åçè¿ä¸ªæ¸¸æçæºä»£ç ã
å çææå¾
è¯ç©äºä¸ä¸ï¼è¿æ¯è®æµç çï¼æå ´è¶£çå¯ä»¥ä¸è½½ç©ä¸ä¸
è¿ä¸ªæ¸¸æ代ç è½ç¶ä¸é¿ï¼ä½æ¯è¿æ¯è®å ç¯å¹ çï¼æ以ç®è¦ç说æä¸ä¸æµç¨ï¼
主è¦ç±ä¸é¨åç»æï¼ä¸æ¯ç´ æï¼å¾çé³é¢ä¹ç±»çæ件ï¼äºæ¯Python代ç ï¼ä¸æ¯kvæ件ï¼è¿ä¸ªkvæ件æç¹åhtmlä¸çcssã
Python代ç çæ件åä¸è¬å½å为main.py
ç¶åä¸å®æä¸ä¸ªå«åXXXAppçç±»ï¼å¹¶ç»§æ¿Appã
æ¯å¦è¯¥ç±»å«åGameAppï¼é£ä¹è¯¥ç®å½ä¸çkvæ件åå¿ é¡»ä¸ºGameï¼å¦ä¸å¾æ示ï¼å¦æä¸æ¯ï¼é£ä¹kvæ件ä¸çä¸äºè®¾å®å°±ä¸ä¼çæã
æ¯å¦è®¾å®ä¸ä¸ªæ ç¾
Label:
id: time
text: 'xxxx'
font_size:
id为timeï¼textææ¬å 容为âxxxxâ,ç¶ååä½ä¸º
好å§ï¼ç¹å°ä¸ºæ¢å§ï¼ä¸è¿ä¼¼ä¹ä»ä¹é½æ²¡ç¹å°~~~
ä»æ å°æåä¸ä¸ªAppï¼ææ³æä¼å¦èµ·ä¸ç¯æç« å§ã
glewglew for Ada
Glew是一个为C/C++开发者设计的工具,然而,glew for Ada则是一个特别定制的解决方案,它为Ada编程语言用户提供了glew的Ada绑定库。这个版本是1.5.4,特别适合于Ada程序员使用。如果你需要使用更高级的功能,你可以在该库中找到一个自动翻译工具,它能够帮助你将glew的源代码转换为Ada语言。然而,红色YL源码这个工具并不完美,可能会存在一些重复定义的问题,以及需要对一些函数的参数名称进行调整或添加。实际上,翻译工具的源代码已随下载文件一同提供,对于对这个工具感兴趣的开发者,这是一个可以进行改进和扩展的平台。你可以根据自己的需求对其进行优化,以更好地适应Ada编程环境。
OpenGL ES glad 下载和使用
GLEW扩展库作用:不同的显卡公司,也会发布一些只有自家显卡才支持的扩展函数,你要想用这些函数,不得不去寻找最新的glext.h,有了GLEW扩展库,你就再也不用为找不到函数的接口而烦恼,因为GLEW能自动识别你的平台所支持的全部OpenGL高级扩展函数。也就是说,只要包含一个glew.h头文件,你就能使用gl、串口 截取 源码glu、glext、wgl、glx的全部函数。
glad是继gl3w、glew之后,当前最新的用来访问OpenGL规范接口的第三方库。简单说glad是glew的升级版,就是说glew比较老,glad比较新。在Windows中使用:OpenGL只是一个标准/规范,具体的实现是由驱动开发商针对特定显卡实现的。由于OpenGL驱动版本众多,它大多数函数的位置都无法在编译时确定下来,需要在运行时查询。所以任务就落在了开发者身上,开发者需要在运行时获取函数地址并将其保存在一个函数指针中供以后使用,这就是妃子夺宝源码glfw和glew的共同之处。
在OpenGL项目开发中,glfw一般搭配glad一起使用。
glad下载地址:glad.dav1d.de/。打开GLAD的在线服务,将语言(Language)设置为C/C++,在API选项中,选择3.3以上的OpenGL(gl)版本(我们的教程中将使用3.3版本,但更新的版本也能用)。之后将模式(Profile)设置为Core,并且保证选中了生成加载器(Generate a loader)选项。现在可以先(暂时)忽略扩展(Extensions)中的内容。都选择完之后,点击生成(Generate)按钮来生成库文件。
GLAD现在应该提供给你了一个zip压缩文件,包含两个头文件目录,和一个glad.c文件。将两个头文件目录(glad和KHR)复制到你的Include文件夹中(或者增加一个额外的项目指向这些目录),并添加glad.c文件到你的工程中。
在OpenGL项目开发中,glfw+glad效果演示和源码下载:注意当前代码只编译了Windowsx平台,如果需要x,自己配置工程属性编译即可,源码下载:OpenGL_glfw_glad。
在OpenGL项目开发中,glfw一般搭配glad一起使用。
本文由博客-猿说编程 猿说编程发布!
第一个OpenGL程序
初次接触游戏开发,近十个月的积累却首次编写OpenGL程序,即刻便陷入了一片混乱。然而,这个过程对初学者而言,却是不可或缺的宝贵经验。
开发环境:VS Community Edition,一个兼容Windows开发的集成环境。
依赖库:glew,即The OpenGL Extension Wrangler Library,作为API兼容层,为OpenGL提供了更广泛的访问和操作。glfw,GLFW库,是用于提供OpenGL环境的便利工具。
配置准备:通过下载glew的binary版本来获得glew.dll、glew.h、glew.lib文件,使用glfw只需下载源代码,利用CMake进行编译,生成glfw3.lib、glfw3.h文件。
设置环境:需配置头文件目录、库目录和链接库名。运行程序后会在x目录下生成文件,确保将glew.dll放入其中,否则在使用glew头文件时,程序会因找不到glew.dll而报错。
开始编程:若未遵循特定顺序,会遭遇错误信息。为此,我们着手建立并运行两个简单的着色器,分别为顶点着色器和片元着色器,分别输出位置和固定颜色。
流程步骤:1、创建着色器对象、关联代码、编译着色器源码。接着创建着色器程序、关联着色器对象、链接程序和使用程序。值得注意的是,确保程序链接状态,便于追踪并调试可能的错误。
假设问题出现:如不正确地在代码中省略分号,将遇到特定的错误信息。正确执行以下步骤:定义顶点,创建缓冲对象,初始化缓冲对象,生成VAO,绑定VAO和缓存,并设置顶点数据值。最后,启用顶点数组。
初始化窗口环境:遵循模板代码编写,特别强调在代码中加入glfwMakeContextCurrent(window)行,确保设置当前环境为窗口所关联的OpenGL环境。避免忽略此步骤导致gl调用无法执行。
程序执行效果:成功运行,实现了第一个OpenGL程序,尽管过程繁复且可能遇到各种困难。对于有图形学基础和C++背景的开发者来说,这无疑为今后更深入的OpenGL学习打下了坚实基础。
展望未来:此过程既是一个挑战,也是一个新的起点。对于希望探索并深入OpenGL开发领域的开发者来说,这是不断积累经验、优化环境和提高编程技能的良好开端。尽管时间投入和挑战并存,但持之以恒的学习和探索,定将逐步开启通往更高级图形编程世界的大门。