教材:《计算机图形学》(第四版) Computer Graphics with OpenGL - Fourth Edition
第三章 写第一个运行OpenGL的程序 (Page30)
环境 win7 + vs + vscode (在vscode编辑运行)
使用vs的开发者命令行工具,在准备的放置第一个程序的目录下。执行 code .
安装C/C++ vscode扩展包
shift + ctrl + b 配置生成task.json。选择cl编译,之后构建也要用开发者命令行code命令打开项目。
F5 配置 launch.json。选择window启动
第一个程序:first_opengl.c 来自opengl wiki,用一个窗体显示GL的版本。 https://www.khronos.org/opengl/wiki/Creating_an_OpenGL_Context_(WGL)
使用OpenGL有两个步骤:
1.创建OpenGL的上下文,即需要创建一个窗体来包含整个OpenGL的运行,这个工作一般用一些工具库来实现,如GLEW,书中提到的GLUT已经过时了。
2.加载OpenGL的函数。须平台相关的调用,当然这一部分也可以用一些通用的扩展库实现。
task.json
{
"version": "2.0.0",
"tasks": [
{
"type": "shell",
"label": "C/C++: cl.exe build active file",
"command": "cl.exe",
"args": [
"/Zi",
"/EHsc",
"/Fd:",
"${fileDirname}\\build\\PROC.pdb",
"/Fe:",
"${fileDirname}\\build\\${fileBasenameNoExtension}.exe",
"/Fo:",
"${fileDirname}\\build\\${fileBasenameNoExtension}.obj",
"/D",
"UNICODE",
"${file}"
],
"options": {
"cwd": "${workspaceFolder}"
},
"problemMatcher": [
"$msCompile"
],
"group": {
"kind": "build",
"isDefault": true
}
}
]
}
launch.json
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "(Windows) 启动",
"type": "cppvsdbg",
"request": "launch",
"program": "${workspaceFolder}/build/${fileBasenameNoExtension}.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false
}
]
}
第一个程序
该程序主要创建了OpenGL Context。glGetString会在上下文中执行。
wiki的原程序在生成_.exe可执行程序会有一些链接问题。要添加两个链接库
这个program与一般的过程程序不同,是windows 桌面应用,是多线程的,与windows交互的,其发生系统与客户程序控制权的转换,比如输入触发系统控制,传递给客户程序事件,或直接执行处理程序,当处理程序返回给系统时,控制权继续交给客户程序。<