Skip to content

Commit ca69cb9

Browse files
author
Erik van Bilsen
committed
Updated Readme
1 parent 93be17c commit ca69cb9

File tree

1 file changed

+1
-144
lines changed

1 file changed

+1
-144
lines changed

README.md

Lines changed: 1 addition & 144 deletions
Original file line numberDiff line numberDiff line change
@@ -1,146 +1,3 @@
11
# Learn OpenGL(ES) with Delphi
22

3-
**Under Construction...**
4-
5-
This is the Delphi version of Joey de Vries's excellent set of [Learn OpenGL](https://learnopengl.com/) tutorials. Those tutorials focus on **modern** desktop OpenGL using C and C++.
6-
7-
This version differs from Joey's version in a couple of areas though:
8-
* It uses [Delphi](https://www.embarcadero.com/products/delphi) as the programming language.
9-
* It focuses primarily on a subset of OpenGL called OpenGL ES. In particular OpenGL ES 2.0.
10-
* As a result, the tutorials are cross-platform and work on Windows, macOS, iOS and Android.
11-
* For setting up the render window and handling user input, Joey's version uses the [GLFW](http://www.glfw.org/) utility library. However, since GLFW is not supported for iOS and Android, we cannot use it. (If you are interested in Windows and macOS only, you can download my [GLFW Language Bindings for Delphi](https://github.com/neslib/DelphiGlfw)). I could have used another utility library like [SDL2](https://www.libsdl.org/), but decided to write all platform-specific code in Delphi instead, which can be a good learning experience in itself.
12-
* For 2D and 3D math, Joey's version uses the [GLM](http://glm.g-truc.net/) library. For Delphi, we could use Delphi's built-in math functions (like the `System.Math.Vectors` unit). However, I use this opportunity to plug my [FastMath](https://github.com/neslib/FastMath) library, which API is very similar to Delphi's, but is **much much** faster. Since you probably want to use OpenGL for high performance graphics, you should use a high performance math library as well.
13-
14-
## Delphi Requirements
15-
16-
These tutorials require Delphi 10.1 Berlin or later. The reason for this is that Delphi Berlin re-introduced 8-bit strings on mobile platforms (only of type `RawByteString` though). This makes it easier and faster to interoperate with OpenGL and other C-API's that use 8-bit strings.
17-
18-
If you use an older version of Delphi, you can still use it when you target Windows and/or macOS only. If you want the tutorials to work on mobile platforms as well with an older Delphi version, then you will have to modify the code everywhere RawByteStrings are used and perform your own Unicode-to-MarshaledAString marshalling.
19-
20-
## OpenGL ES
21-
22-
All tutorials uses the OpenGL ES 2.0 subset of OpenGL, unless noted otherwise. The ES suffix stands for Embedded Systems. This flavor of OpenGL is supported on iOS and Android and also forms the basis for WebGL (meaning that these tutorials can be translated to a web-browser as well).
23-
24-
For the most part, as long as you stick to the OpenGL ES subset, your app will work on desktop platforms (Windows and macOS) as well. This makes writing cross-platform OpenGL apps much easier.
25-
26-
## Platform-Specific Glue Code
27-
28-
Setting up the application and handling user input requires platform-specific code. We could use Delphi's FireMonkey framework to handle this for us. However, FireMonkey is not well suited for high-performance apps and games. In addition, FireMonkey on Windows uses DirectX for 3D graphics and not OpenGL.
29-
30-
So, these tutorials don't use FireMonkey at all, but instead handle app setup and input handling manually. More about this is in the "Creating an OpenGL App" tutorial.
31-
32-
## Dependencies
33-
34-
Besides Delphi, these tutorials have a couple of dependencies. These can be downloaded and used for free and don't require any installation into system directories:
35-
36-
* [FastMath](https://github.com/neslib/FastMath) is used for all vector and matrix math.
37-
* [DelphiStb](https://github.com/neslib/DelphiStb) are Delphi header translations for some awesome public domain C [stb libraries](https://github.com/nothings/stb). We mostly use the `Neslib.Stb.Image` unit for cross-platform loading of image files (since we cannot use FireMonkey for that).
38-
39-
Put the FastMath and DelphiStb libraries at the same directory level as these tutorials. Otherwise, the Delphi projects cannot find them. For example, a directory structure like this:
40-
41-
* C:\Development
42-
* \Neslib
43-
* \DelphiLearnOpenGL
44-
* \DelphiStb
45-
* \FastMath
46-
47-
## Structure
48-
49-
Learn OpenGL(ES) with Delphi is broken down into a number of general subjects. Each subject contains several sections that each explain different concepts in large detail. Each of the subjects can be found in the Tutorial Index below and each tutorial links to the previous and next tutorials. The subjects are taught in a linear fashion (so it is advised to start from the top to the bottom, unless otherwise instructed) where each page explains the background theory and the practical aspects.
50-
51-
To make the tutorials easier to follow and give them some added structure the site contains blockquotes and code blocks.
52-
53-
### Blockquotes
54-
55-
> :information_source: Information blockquotes encompasses some notes or useful features/hints about OpenGL or the subject at hand.
56-
57-
58-
> :warning: Warning blockquotes will contain warnings or other features you have to be extra careful with.
59-
60-
> :exclamation:`Windows` Blockquotes starting with an exclamation followed by one or more platforms (`Windows`, `macOS`, `iOS` or `Android`) contain notes specific to those platforms,.
61-
62-
> :link: Link blockquotes link to the corresponding code in the GitHub repository.
63-
64-
### Code
65-
You will find plenty of small pieces of code are located in boxes with syntax-highlighted code as you can see below:
66-
67-
```Delphi
68-
// This box contains code
69-
```
70-
71-
Since these provide only snippets of code, wherever necessary I will provide a link to the entire source code required for a given subject.
72-
73-
## <a name="Contents"></a>Tutorials Index
74-
75-
* Getting Started
76-
* [OpenGL (ES)](Documentation/1.GettingStarted/1.0a.OpenGL.md)
77-
* [Creating an OpenGL App](Documentation/1.GettingStarted/1.0b.CreateApp.md)
78-
* [1.1 Hello Window](Documentation/1.GettingStarted/1.1.HelloWindow.md)
79-
* [1.2 Hello Triangle](Documentation/1.GettingStarted/1.2.HelloTriangle.md)
80-
* [1.3 Shaders](Documentation/1.GettingStarted/1.3.Shaders.md)
81-
* [1.4 Textures](Documentation/1.GettingStarted/1.4.Textures.md)
82-
* 1.5 Transformations
83-
* 1.6 Coordinate Systems
84-
* 1.7 Camera
85-
* Review
86-
* Lighting
87-
* Colors
88-
* Basic Lighting
89-
* Materials
90-
* Lighting Maps
91-
* Light Casters
92-
* Multiple Lights
93-
* Review
94-
* Model Loading
95-
* Assimp
96-
* Mesh
97-
* Model
98-
* Advanced OpenGL
99-
* Depth Testing
100-
* Stencil Testing
101-
* Blending
102-
* Face Culling
103-
* Framebuffers
104-
* Cubemaps
105-
* Advanced Data
106-
* Advanced GLSL
107-
* Geometry Shader
108-
* Instancing
109-
* Anti Aliasing
110-
* Advanced Lighting
111-
* Advanced Lighting
112-
* Gamma Correction
113-
* Shadows
114-
* Shadow Mapping
115-
* Point Shadows
116-
* CSM
117-
* Normal Mapping
118-
* Parallax Mapping
119-
* HDR
120-
* Bloom
121-
* Deferred Shading
122-
* SSAO
123-
* PBR
124-
* Theory
125-
* Lighting
126-
* IBL
127-
* Diffuse Irradiance
128-
* Specular IBL
129-
* In Practive
130-
* Debugging
131-
* Text Rendering
132-
* 2D Game
133-
* Breakout
134-
* Setting Up
135-
* Rendering Sprites
136-
* Levels
137-
* Collisions
138-
* Ball
139-
* Collision Detection
140-
* Collision Resolution
141-
* Particles
142-
* Postprocessing
143-
* Powerups
144-
* Audio
145-
* Render Text
146-
* Final Thoughts
3+
This is the code repository that accompanies the [Learn OpenGL(ES) with Delphi](https://github.com/neslib/DelphiLearnOpenGL/wiki) tutorials.

0 commit comments

Comments
 (0)