From e36bb6ec2e9dc04031663d5dc4f31bfc692c0455 Mon Sep 17 00:00:00 2001 From: Meow J Date: Mon, 4 Jul 2016 22:02:19 +0800 Subject: [PATCH] Fix the style of images --- docs/01 Getting started/01 OpenGL.md | 2 +- docs/css/style.css | 43 ++++++++++++++++++++++++--- docs/img/opengl.jpg | Bin 0 -> 42470 bytes docs/index.md | 4 +-- 4 files changed, 42 insertions(+), 7 deletions(-) create mode 100644 docs/img/opengl.jpg diff --git a/docs/01 Getting started/01 OpenGL.md b/docs/01 Getting started/01 OpenGL.md index 42aa4d5..56d4e13 100644 --- a/docs/01 Getting started/01 OpenGL.md +++ b/docs/01 Getting started/01 OpenGL.md @@ -9,7 +9,7 @@ 在开始这段旅程之前我们先了解一下OpenGL到底是什么。一般它被认为是一个API(**Application Programming Interface**, 应用程序编程接口),包含了一系列可以操作图形、图像的函数。然而,OpenGL本身并不是一个API,它仅仅是一个由[Khronos组织](http://www.khronos.org/)制定并维护的规范(Specification)。 -OpenGL Logo +OpenGL Logo OpenGL规范严格规定了每个函数该如何执行,以及它们的输出值。至于内部具体每个函数是如何实现(Implement)的,将由OpenGL库的开发者自行决定(注:这里开发者是指编写OpenGL库的人)。因为OpenGL规范并没有规定实现的细节,具体的OpenGL库允许使用不同的实现,只要其功能和结果与规范相匹配(亦即,作为用户不会感受到功能上的差异)。 diff --git a/docs/css/style.css b/docs/css/style.css index e3985c4..74e1308 100644 --- a/docs/css/style.css +++ b/docs/css/style.css @@ -46,10 +46,45 @@ div.admonition code { font-family: Consolas, Menlo, Monaco, Lucida Console, Liberation Mono, DejaVu Sans Mono, Bitstream Vera Sans Mono, Courier New, monospace, serif; } -.rst-content img { - display: block; - margin-left: auto; - margin-right: auto; +img { + display: block; + margin-left: auto; + margin-right: auto; + border-radius: 7px; + border: 3px solid #bbb; +} + +img.clean { + border: 0px; +} + +img.left { + float: left; + margin: 10px; + border: 2px solid #bbb; + border-radius: 3px; + margin-right: 20px; +} + +img.right { + float: right; + margin: 10px; + margin-left: 20px; +} + +img.small { + width: 150px; + height: auto; +} + +img.medium { + width: 300px; + height: auto; +} + +img.large { + width: 500px; + height: auto; } video { diff --git a/docs/img/opengl.jpg b/docs/img/opengl.jpg new file mode 100644 index 0000000000000000000000000000000000000000..031e1173da8f37e85ef77ef83edcb1d8b8f3dce8 GIT binary patch literal 42470 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 Vw}S=$kK9`S`{Vq7|Htk8{{kpDn$7?K literal 0 HcmV?d00001 diff --git a/docs/index.md b/docs/index.md index 4f602ee..8956584 100644 --- a/docs/index.md +++ b/docs/index.md @@ -4,9 +4,9 @@ ## 为什么要阅读这些教程呢? -在互联网上,关于学习OpenGL的有成千上万的文档与资源,然而其中大部分的资源仅仅讨论了OpenGL的立即渲染模式(Immediate Mode,通常会说旧OpenGL),亦或是不完整,缺少适当的文档,或仅仅不适合你的口味。所以我的目标是提供一个既完整,又易懂的平台供人们学习。 +Image of smiling textured containers in OpenGL -Image of smiling textured containers in OpenGL +在互联网上,关于学习OpenGL的有成千上万的文档与资源,然而其中大部分的资源仅仅讨论了OpenGL的立即渲染模式(Immediate Mode,通常会说旧OpenGL),亦或是不完整,缺少适当的文档,或仅仅不适合你的口味。所以我的目标是提供一个既完整,又易懂的平台供人们学习。 如果你很享受那些提供手把手指导的教程,那些提供清晰例子的教程,和那些不会一下将你淹没在细节中的教程,我的这些教程很可能就会适合你。这些教程旨在让那些没有图形编程经验的人们能够理解,又让那些有经验的读者有阅读下去的兴趣。这些教程同样也讨论了一些常用的概念,只需要你再有一点创造力,就能将你的想法变成真正的3D程序。如果如果你觉得前面这些讲的都是你,欢迎继续阅读我的教程。