GithubHelp home page GithubHelp logo

learnopengl-cn / learnopengl-cn Goto Github PK

View Code? Open in Web Editor NEW
5.4K 5.4K 1.1K 176.67 MB

http://learnopengl.com 系列教程的简体中文翻译

Home Page: https://learnopengl-cn.github.io/

Python 2.67% HTML 23.66% CSS 70.55% JavaScript 3.12%
learnopengl translation

learnopengl-cn's Introduction

LearnOpenGL中文化工程

Status badge

learnopengl.com系列教程的中文翻译,目前正在校对及翻译中。

英文原版learnopengl.com

目前状态

  • 原文大部分代码都有改变(使用的新的库),需要从头开始重新校对(Krasjet正在处理中,最重要的配置部分已经更新完毕)
  • 5-2节之后都没有按照新版的格式来排版,而且错误极多,也没有统一译名,需要进行整体的修改(Krasjet正在处理中,可能比较漫长)
  • 从头校对整体修改之后的文章(志愿者希望)
  • PBL 章节和 In Practice 章节下还有几篇教程没有翻译(志愿者希望)

阅读地址

目前Host在GitHub上,可以点击这里进行阅读。

旧版本的Host在Read The Docs内(不定时更新),可以点击这里进行阅读。

认领翻译

由于我们的志愿者来自五湖四海,为了避免冲突。请志愿者们先Clone这个Repository 。同步到本地后找到要翻译的文章,创建一个如下所示的只包含作者、翻译者和原文链接信息的Markdown文件:

原文     | [英文标题](原文地址)
      ---|---
作者     | JoeyDeVries
翻译     | [翻译]
校对     | 暂无

译文的文件命名统一规范为:

<两位数的章序列> <章名称>/<两位数节序列> 节名称.md

如果有小节的话:

<两位数的章序列> <章名称>/<两位数节序列> 节名称/<两位数小节序列> 小节名称.md

例如:

01 Getting started/01 OpenGL.md
或
05 Advanced Lighting/03 Shadows/02 Point Shadows.md

翻译之前请先阅读样式指南

之后请联系我们,将您加入LearnOpenGL-CN组织,然后提交并Push您的翻译。或者您也可以Fork这个工程在本地编辑之后发送Pull Request。

样式指南

在文档的写作过程中,请遵守我们的样式指南方便之后的校对以及修改工作。

构建

首先请安装Python 3.7+,之后初始化环境:

$ pip install mkdocs==1.4.2 python-markdown-math==0.8

初始化以后,每次构建只需要输入以下指令即可,构建后的文件在site文件夹内:

$ mkdocs build

如果只是想测试的话,请输入以下指令:

$ mkdocs serve

部署的网页可以通过127.0.0.1:8000来访问。

建议

如果您发现教程有任何错误的话,欢迎Fork这个工程并发送Pull Request到 new-theme 分支。如果您不想修改的话,可以点击页面上方的 Issues 按钮提交一个Issue,我们看到后会及时更正。如果是对教程的内容有问题,请先查看原文,如果不是翻译错误的话,请直接在原网站评论区向作者(JoeyDeVries)反馈。

联系方式

QQ群:383745868

learnopengl-cn's People

Contributors

aillieo avatar blumia avatar cadenji avatar coppx avatar flyingsnow-hu avatar fuzhenn avatar geequlim avatar gjy1992 avatar hellokenlee avatar hizhaoxiaoyang avatar hyc0612 avatar jchaos avatar jckcoenf avatar jeremyyvv avatar jiangmuwen avatar keyantu avatar krasjet avatar l-super avatar linkoln avatar ljxljxljx avatar meow-j avatar orbitgw avatar ryosga avatar sefank avatar shenmian avatar shirokosama avatar superaoao avatar tas-i-te avatar weiwen1990 avatar yaqinking avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

learnopengl-cn's Issues

纹理那节,没有出现笑脸图,而是白板

在学习纹理的时候没有出现笑脸图,而是白板,不知道怎么弄。我跑的是最后那个源代码。
在代码中由于
unsigned char *data = stbi_load(FileSystem::getPath("resources/textures/container.jpg").c_str(), &width, &height, &nrChannels, 0);
报错,我直接改为
unsigned char *data = stbi_load("...\container.jpg", &width, &height, &nrChannels, 0);了,不知道是这个原因吗?
在编写4.2.texture.fs和4.2.texture.vs时,我是使用记事本写的文本文档,这样对吗?

1
而是
2

A thank you, and a request

Hey everyone at LearnOpenGL-CN!

I didn't know how to properly communicate to you as a group, so I'm hi-jacking the ticket system for this. But I want to thank you for the translation effort, you did an amazing job and I'm positively surprised how you've managed to capture the look and feel of the site's content. Great stuff!

I noticed you were hosting all translations on a new URL so I've updated the translation references on LearnOpenGL.

Also, I have a small request: would you be so kind to include the original Patreon button/link you can find on the LearnOpenGL website somewhere on the Chinese translation website? I'm sure there's some number of Chinese readers that want to help contribute to new and improved LearnOpenGL content that then propagates to the translated version :-)

Texture一章中代码有误

章节(英文名): Texture
原文地址:https://learnopengl.com/#!Getting-started/Textures

问题:纹理单元   一节中,代码有处不对应

uniform sampler2D ourTexture1;
uniform sampler2D ourTexture2;

void main()
{
    FragColor = mix(texture(ourTexture1, TexCoord), texture(ourTexture2, TexCoord), 0.2);
}

上面使用的名称是 ourTexture1ourTexture2,下面却用了 texture1texture2

glBindTexture(GL_TEXTURE_2D, texture1);
glActiveTexture(GL_TEXTURE1);
glBindTexture(GL_TEXTURE_2D, texture2);

对应原文:

uniform sampler2D texture1;
uniform sampler2D texture2;

void main()
{
    FragColor = mix(texture(texture1, TexCoord), texture(texture2, TexCoord), 0.2);
}
glBindTexture(GL_TEXTURE_2D, texture1);
glActiveTexture(GL_TEXTURE1);
glBindTexture(GL_TEXTURE_2D, texture2);

修复建议:把 glBindTexture 那部分也换了,改成如下

glBindTexture(GL_TEXTURE_2D, ourTexture1);
glActiveTexture(GL_TEXTURE1);
glBindTexture(GL_TEXTURE_2D, ourTexture2);

翻译问题

章节(英文名):高级光照( Advanced Lighting)

问题:
中文翻译中:当视线方向恰好与反射向量对称时,半程向量就与法线向量重合。

对应原文:
When the view direction is perfectly aligned with the (now imaginary) reflection vector, the halfway vector aligns perfectly with the normal vector.

修复建议(可选):
当视线方向恰好与反射向量重合时,半程向量就与法线向量重合。

图片加载问题

刚接触opengl 正在自学,在纹理这一节的“加载与创建纹理”的这一小节,直接跑得源码,第105行报错
image
image
百度无果,求解怎么解决,谢谢大佬

Frustum翻译建议

章节(英文名):Coordinate Systems
原文地址:https://learnopengl.com/Getting-started/Coordinate-Systems

问题:名词翻译。

对应原文:
This viewing box a projection matrix creates is called a frustum and each coordinate that ends up inside this frustum will end up on the user's screen. The total process to convert coordinates within a specified range to NDC that can easily be mapped to 2D view-space coordinates is called projection since the projection matrix projects 3D coordinates to the easy-to-map-to-2D normalized device coordinates.

修复建议(可选):
frustum有翻译作“视锥体”,私以为这个比原翻译“平截头体”更直观一些。

入门-摄像机似乎有个部分是原版搞错了

float yoffset = lastY - ypos; // 注意这里是相反的,因为y坐标是从底部往顶部依次增大的
查阅glfw文档,这个鼠标位置的原点是左上角(实际测试也是这样),所以y坐标是从上往下增加的

getting started/coordinate systems/world space,“然后沿着y轴往坐标旋转”等几处问题

1世界空间
原文:
Think of it as transforming a house by scaling it down (it was a bit too large in local space), translating it to a suburbia town and rotating it a bit to the left on the y-axis so that it neatly fits with the neighboring houses.

翻译:
你可以想象一下,我们需要转换一栋房子,通过将它缩小(因为它在局部坐标系中显得太大了),将它往郊区的方向平移,然后沿着y轴往坐标旋转。

ps:最后一句,应为“然后沿着y轴往左旋转”

2透视投影
原文:
anything outside the frustum will not end up in the clip space volume and will thus become clipped.

翻译:
任何在这个平截头体的对象最后都不会出现在裁剪空间体积内,并且将会受到裁剪。

ps:应为“任何在这个平截头体的对象...”

3透视投影
原文:
The second parameter sets the aspect ratio which is calculated by dividing the viewport's width by its height.

翻译:
第二个参数设置了宽高比,由视口的高除以宽

ps:看原文是高/宽,但上面公式是宽/高,感觉公式应该更准确

4进入3D
翻译:
我们会通过将场景沿着z轴正方向平移来实现这个

ps:应为“我们会通过将场景沿着z轴方向平移来实现这个”

5.进入3D
翻译:
OpenGL会将它的深度值和z缓冲进行比较然后如果当前的片段在其它片段之后它将会被丢弃,然后重写

ps:最后应为“否则重写”

Normal Distribution Function正确的翻译是法线分布函数,而不是正态分布函数

PBR-White-Paper 中提到:

另外,需要强调一点。Normal Distribution Function正确的翻译是法线分布函数,而不是正态分布函数。 google翻译等翻译软件会将Normal Distribution Function翻译成正态分布函数,而不少中文资料就跟着翻译成了正态分布函数,这是错误的。其实,一些参考文献会使用术语“法线分布(distribution of normals)”来避免与高斯正态分布(Gaussian normal distribution)混淆。

需要 PR 吗?

高级光照一处翻译貌似错了

https://learnopengl.com/Advanced-Lighting/Advanced-Lighting
原文:The only difference between Blinn-Phong and Phong specular reflection is that we now measure the angle between the normal and the halfway vector compared to the angle between the view direction and the reflection vector.
现在的翻译版本是:Blinn-Phong和Phong的镜面反射唯一不同之处在于,现在我们要测量法线和半程向量之间的角度,而半程向量是视线方向和反射向量之间的夹角。

看原文不是说半程向量是视线方向和反射向量之间的夹角,这里是说Phong specular reflection要测量view direction 和 reflection vector之间的夹角,Blinn-Phong reflection要测量normal 和 halfway vector之间的夹角。 所以翻译成Blinn-Phong和Phong的镜面反射唯一不同之处在于,现在我们要测量法线和半程向量之间的角度,而不是测量视线向量和反射向量之间的角度。

iOS学习OpenGLES

你好,我是iOS开发者,需要OpenGLES参考的就是这个文章。但有些代码不一样,我可以提供iOS版本的么,或者我能自己写博客引用修改文章么

翻译问题

章节(英文名):Advanced-OpenGL -> Stencil-testing -> Stencil functions 小节
原文地址:StencilTest
当前译为:

ref:指定模板测试的引用值。模板缓冲的内容会与这个值对比。
mask:指定一个遮罩,在模板测试对比引用值和储存的模板值前,对它们进行按位与(and)操作,初始设置为1。

原文为:

ref: specifies the reference value for the stencil test. The stencil buffer's content is compared to this value.
mask: specifies a mask that is ANDed with both the reference value and the stored stencil value before the test compares them. Initially set to all 1s.

根据原文意思,reference应该译为参考值而不是引用,mask应该译为掩码而不是遮罩。后面设为1s而不是1。1s就是0xFF的意思,按照官方文档,mask的解释建议译为:

mask:指定一个掩码值,该掩码值会与参考值和模板的缓冲值分别做按位与操作,按位与操作后的两个结果再按照比较函数做比较。默认情况下该掩码值为全1(对于8位掩码即0xFF)。

题外话:提交isuess太麻烦,加入member的话是加QQ群就可以了吗?

翻译问题请提交 Issue

现在在翻译中发现新的问题请新开 Issue 来反馈,在反馈的时候请注明章节。

可以采用以下模板:

章节(英文名):
原文地址:

问题:

对应原文:

修复建议(可选):

原文请从原教程中复制,以便搜索。

翻译问题

Shadow Mapping一节中,resolution一词被翻译为解析度,是否应为分辨率?

原文:

因为阴影贴图受限于解析度,在距离光源比较远...

入门/着色器/从文件读取,译注1,有不同理解

译注1

实际上把着色器代码保存在文件中适合学习OpenGL的时候,实际开发中最好把一个着色器直接储存为多个字符串,这样具有更高的灵活度。

实际开发,GLSL放在代码中,修改时,程序需要compile,大型程序花费时间很长,灵活度不如写在文件中

how to load ply file

hello ,
I successfully read the obj file with the model base on assimp, but the ply file does not work. why?,how to do it
my email: [email protected]

  我用基于assimp 的模型 成功读取了obj 文件,但是ply文件却不行.为什么,应如何去做

点阴影文章代码有一处和原文不一样

#version 330 core
in vec4 FragPos;

uniform vec3 lightPos;
uniform float far_plane;

void main()
{
// get distance between fragment and light source
float lightDistance = length(FragPos.xyz - lightPos);

// map to [0;1] range by dividing by far_plane
lightDistance = lightDistance / far_plane;

// Write this as modified depth
gl_FragDepth = gl_FragCoord.z;

}
应该是gl_FragDepth = lightDistance;

翻译问题

章节(英文名):阴影映射(Shadow Mapping)

问题:
中文翻译:解决这个问题也很简单,我们简单的强制把shadow的值设为0.0,不管投影向量的z坐标是否大于1.0

对应原文:
The fix for this is also relatively easy as we simply force the shadow value to 0.0 whenever the projected vector's z coordinate is larger than 1.0

修复建议(可选):
解决这个问题也很简单,每当投影向量的z坐标大于1.0时,我们简单的强制把shadow的值设为0.0。

入门/变换/位移,原文两处错误

  1. If we represent the scaling vector as (Tx,Ty,Tz)(Tx,Ty,Tz) we can define the translation matrix by:
    如果我们把缩放向量表示为(Tx,Ty,Tz)(Tx,Ty,Tz)我们就能把位移矩阵定义为:
    note:此处“缩放向量”应为“位移向量”,是原文有错误

2.This works because all of the translation values are multiplied by the vector's w column
这样是能工作的,因为所有的位移值都要乘以向量的w列,
note:此处“w列”应为“w行”,是原文错误

第一章07Transformations中单位矩阵应当先进行初始化之后才能进行计算

glm::vec4 vec(1.0f, 0.0f, 0.0f, 1.0f);
glm::mat4 trans;
trans = glm::translate(trans, glm::vec3(1.0f, 1.0f, 0.0f));
vec = trans * vec;
std::cout << vec.x << vec.y << vec.z << std::endl;

应为

glm::vec4 vec(1.0f, 0.0f, 0.0f, 1.0f);
glm::mat4 trans = glm::mat4 trans(1.0f);
trans = glm::translate(trans, glm::vec3(1.0f, 1.0f, 0.0f));
vec = trans * vec;
std::cout << vec.x << vec.y << vec.z << std::endl;

翻译问题

章节(英文名):Basic Lighting
原文地址:https://learnopengl.com/#!Lighting/Basic-Lighting

问题:如果我们打算把法向量乘以一个模型矩阵,我们就要把模型矩阵左上角3×3的位移部分矩阵移除

对应原文:So if we want to multiply the normal vectors with a model matrix we want to remove the translation part of the matrix by taking the upper-left 3x3 matrix of the model matrix

修复建议(可选):这里是不是取用3×3矩阵的意思而不是移出?

法线贴图(Normal Mapping)章节有名词错误

章节(英文名):法线贴图(Normal Mapping)
原文地址:Normal-Mapping

问题:
中文翻译中:但大致是把它变化为,1除以矩阵的行列式,再乘以它的共轭矩阵
共轭矩阵一处在原文中对应的是 adjugate matrix ,中文翻译应为 伴随矩阵
参考 wikipedia 词条 Adjugate_matrix

对应原文:
but it roughly translates to 1 over the determinant of the matrix multiplied by its adjugate matrix

修复建议(可选):
共轭矩阵 改为 伴随矩阵

Tessellation Evaluation Shader的翻译问题

见这一篇这里:https://git.io/v6i7e

由于想不出来其它翻译,现在暂时直译成“细分评估着色器”,但这肯定是不对的。

Tessellation是细分没有问题,但是Evaluation在着色器本身的功能上绝对不是“评估”。TES本身的功能是根据细分图元生成器(TPG)提供的数据计算出顶点的坐标。在这里Evaluation的意义类似于evaluate an expression里这样,但是翻译成“细分计算着色器”会与Compute Shader(计算着色器)产生混淆,所以还希望一个更好的翻译。

参考:

某些Sections存在的一些问题

01-03:

  • 注意仔细检查翻译,错误有点多,可能还要继续校对

01-07:

  • 校对过程中有对原来的翻译大段大段重写,变动比较大(特别前半部分),可能还需要重新校对一遍

01-08:

  • ~~翻译太生硬,可能还要重写。并且可能还有漏掉的地方。 ~~
  • ~~简单说下问题,供再次校对的时候参考: ~~
    1. 术语翻译不统一
    2. 从句还保留着英语语序,翻译出来很奇怪
    3. To do很多未翻译出来
      4.~~ 某些地方很不通顺,特别是遇上连词的时候~~

英文错误

在你好,窗口小节中,输入那里,第二行:GLWF应该是GLFW

翻译问题 ( 不好意思又是我...

章节(英文名):

Advanced-GLSL

原文地址:

https://learnopengl.com/#!Advanced-OpenGL/Advanced-GLSL

问题:

译文: Uniform块布局-最后一段: “在定义uniform块前面添加layout (std140)声明,我们就能告诉OpenGL这个uniform块使用了std140布局。另外还有两种其他的布局可以选择,它们需要我们在填充缓冲之前查询每个偏移量。我们已经了解了分享布局(shared layout)和其他的布局都将被封装(packed)。当使用封装(packed)布局的时候,不能保证布局在别的程序中能够保持一致,因为它允许编译器从uniform块中优化出去uniform变量,这在每个着色器中都可能不同。”
和原文相去甚远, 估计是机器翻译 校对没做好。

对应原文:

By adding the statement layout (std140) before the definition of the uniform block we tell OpenGL that this uniform block uses the std140 layout. There are two other layouts to choose from that require us to query each offset before filling the buffers. We've already seen the shared layout and the other remaining layout being packed. When using the packed layout, there is no guarantee that the layout remains the same between programs (not shared) because it allows the compiler to optimize uniform variables away from the uniform block which might differ per shader.

修复建议(可选):

在定义uniform 块前面添加layout (std140)的声明表示这个uniform块使用 std140 布局。 另外我们还有两种布局可以选择,但是这两种布局都要求我们在填充缓冲之前查询每一个变量的偏移。 我们已经介绍了共享布局(shared layout),剩下另一种布局则是封装布局(packed layout)。当我们使用封装布局(pack layout)的时候, OpenGL不保证所有程序的数据布局方式是一样的(也就是不共享),因为该布局允许编译器去优化uniform变量的数据放置方式,而这种优化的结果因不同的Shader而异。

P.S. 我觉得我译得也不是很好,尤其是packed layout是否该译为封装布局有待商议。不过译为打包布局我是拒绝的...

帧缓冲这个章节,的Kernel effects代码有问题.变量没初始化导致的花屏

const float offset = 1.0 / 300;

void main()
{
vec2 offsets[9] = vec2[](
vec2(-offset, offset), // top-left
vec2(0.0f, offset), // top-center
vec2(offset, offset), // top-right
vec2(-offset, 0.0f), // center-left
vec2(0.0f, 0.0f), // center-center
vec2(offset, 0.0f), // center-right
vec2(-offset, -offset), // bottom-left
vec2(0.0f, -offset), // bottom-center
vec2(offset, -offset) // bottom-right
);

float kernel[9] = float[](
    -1, -1, -1,
    -1,  9, -1,
    -1, -1, -1
);

vec3 sampleTex[9];
for(int i = 0; i < 9; i++)
{
    sampleTex[i] = vec3(texture(screenTexture, TexCoords.st + offsets[i]));
}

// 这里的col没有初始化,会导致花屏
// 需要改成 vec3 col = vec3(0,0,0);
vec3 col;
for(int i = 0; i < 9; i++)
col += sampleTex[i] * kernel[i];

color = vec4(col, 1.0);

}

02-05 中的 negate

Note that we first negate the light.direction vector.

这一句中的 negate 应该是"取反",而不是"忽略"。

有一个错别字

在 高级OpenGL 那章,高级GLSL 那节下的 Uniform缓冲对象 的第一行后半部分,“比如说,当使用多余一个的着色器时”,“多余”应该时“多于”

翻译问题请来这里提交

现在翻译问题请新建 Issue 提交。参见 #58

多个章节的问题请分为多个回复提交,单个章节的多个问题请合并为一个回复提交。

入门/着色器/GLSL“着色器的开头总是要声明版本...”翻译Issue

入门/着色器/GLSL:
原文:Shaders always begin with a version declaration, followed by a list of input and output variables, uniforms and its main function
翻译:着色器的开头总是要声明版本,接着是输入和输出变量、uniform和main函数。
分析:GLSL可以不声明版本,猜测程序会根据OpenGL32.lib确定一个最低版本。不同版本GLSL可能不同,对应语言的变量、函数也可能不同。且如果要声明版本,必须在首行,否则会编译错误
建议改为:着色器可以用一个版本号开始,接着是输入和输出变量、uniform和main函数。

mkdocs build 出现错误

mkdocs build 在new-theme分支下会出现如下错误,但是master并不会出错

proto@DESKTOP-3U70OFU MINGW64 ~/Documents/Code/repos/LearnOpenGL-CN (new-theme)
$ mkdocs build
WARNING - Config value: 'theme_dir'. Warning: The configuration option {0} has been deprecated and will be removed in a future release of MkDocs.
INFO - Cleaning site directory
INFO - Building documentation to directory: C:\Users\proto\Documents\Code\repos\LearnOpenGL-CN\site
ERROR - Error building page index.md
Traceback (most recent call last):
File "c:\program files\python36\lib\runpy.py", line 193, in _run_module_as_main
"main", mod_spec)
File "c:\program files\python36\lib\runpy.py", line 85, in run_code
exec(code, run_globals)
File "C:\Program Files\Python36\Scripts\mkdocs.exe_main
.py", line 9, in
File "c:\program files\python36\lib\site-packages\click\core.py", line 722, in call
return self.main(*args, **kwargs)
File "c:\program files\python36\lib\site-packages\click\core.py", line 697, in main
rv = self.invoke(ctx)
File "c:\program files\python36\lib\site-packages\click\core.py", line 1066, in invoke
return process_result(sub_ctx.command.invoke(sub_ctx))
File "c:\program files\python36\lib\site-packages\click\core.py", line 895, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "c:\program files\python36\lib\site-packages\click\core.py", line 535, in invoke
return callback(*args, **kwargs)
File "c:\program files\python36\lib\site-packages\mkdocs_main
.py", line 156, in build_command
), dirty=not clean)
File "c:\program files\python36\lib\site-packages\mkdocs\commands\build.py", line 282, in build
build_pages(config, dirty=dirty)
File "c:\program files\python36\lib\site-packages\mkdocs\commands\build.py", line 242, in build_pages
_build_page(page, config, site_navigation, env)
File "c:\program files\python36\lib\site-packages\mkdocs\commands\build.py", line 150, in _build_page
template = env.get_template('main.html')
File "c:\program files\python36\lib\site-packages\jinja2\environment.py", line 830, in get_template
return self._load_template(name, self.make_globals(globals))
File "c:\program files\python36\lib\site-packages\jinja2\environment.py", line 804, in _load_template
template = self.loader.load(self, name, globals)
File "c:\program files\python36\lib\site-packages\jinja2\loaders.py", line 113, in load
source, filename, uptodate = self.get_source(environment, name)
File "c:\program files\python36\lib\site-packages\jinja2\loaders.py", line 187, in get_source
raise TemplateNotFound(template)
jinja2.exceptions.TemplateNotFound: main.html

翻译问题-你好,窗口

原文: glfwWindowHint函数的第一个参数代表选项的名称,我们可以从很多以GLFW_开头的枚举值中选择;第二个参数接受一个**整形**,用来设置这个选项的值。
整形-->整型
更改:glfwWindowHint函数的第一个参数代表选项的名称,我们可以从很多以GLFW_开头的枚举值中选择;第二个参数接受一个整型,用来设置这个选项的值。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.