Texturing and Lighting with OpenGL and GLSL

OpenGL GLSL Texturing and Lighting

OpenGL GLSL Texturing and Lighting

In this article I will demonstrate how to apply 2D textures to your 3D models. I will also show how to define lights that are used to illuminate the objects in your scene.
I assume that the reader has a basic knowledge of C++ and how to create and compile C++ programs. If you have never created an OpenGL program, then I suggest that you read my previous article titled [Introduction to OpenGL and GLSL] before continuing with this article.

Continue reading

Introduction to OpenGL and GLSL

OpenGL

OpenGL

In this article I will introduce the reader to the OpenGL rendering API (application programming interface). I will also introduce GLSL (OpenGL Shading Language). We will create a simple vertex shader and fragment shader that can be used to render very basic 3D primitives. By the end of this article you will know how to create a simple OpenGL application and render 3D objects using shaders.

Continue reading

Transformation and Lighting in Cg 3.1

Lighting with Cg 3.1

Lighting with Cg 3.1

In this article I will demonstrate how to implement a basic lighting model using the Cg shader language. If you are unfamiliar with using Cg in your own applications, then please refer to my previous article titled Introduction to Shader Programming with Cg 3.1.

This article is an updated version of the previous article titled Transformation and Lighting in Cg. In this article, I will not use any deprecated features of OpenGL. I will only use the core OpenGL 3.1 API.

Continue reading

Using OpenGL Vertex Buffer Objects

Vertex Buffer Object

Vertex Buffer Object


In this article, I will explain how to use the ARB_vertex_buffer_object extension to efficiently render geometry in OpenGL.
If you are not sure how to use extensions in OpenGL, you can refer to my previous article titled OpenGL Extensions. If you have never programmed an OpenGL application before, you can refer to my previous article titled Introduction to OpenGL.

Continue reading

OpenGL Extensions

OpenGL Extensions

OpenGL Extensions


In this article I will talk about OpenGL extensions. Every extension is defined by an extension specification. I will explain how to read the extension specification so that you will know how to use the extensions. I will also show how you can check for the existence of extensions and how to initialize extensions in your own source code. I will show how you can use GLEW to query and use extensions with very little extra effort.
I assume the reader is familiar with the C++ programming language. If you want to know how to start programming in OpenGL, refer to my previous article titled Introduction to OpenGL.

Continue reading

Texturing and Lighting in OpenGL

Texturing and Lighting

Texturing and Lighting


In this article, I will demonstrate how to apply 2D textures to your 3D models. I will also show how to define lights in your scene that are used to illuminate the objects in your scene.
I assume that the reader has a basic knowledge of C++ and how to create and compile C++ programs. If you have never created an OpenGL program, then I suggest that you read my previous article titled “Introduction to OpenGLhere before continuing with this article.

Continue reading

Rendering Primitives with OpenGL

Rendering Primitives

Rendering Primitives


In this article, I will examine multiple methods for rendering primitives in OpenGL. The first method I will look at is using immediate-mode rendering to render simple primitives in 3D. Another method of rending primitives in OpenGL uses vertex arrays. And finally I will also examine the use of display lists to generate a set of render calls that can be executed at another point in time. The reader is expected to have a basic understanding of programming techniques in C++. If you want to know how you can get started with OpenGL, you can refer to my previous article titled [Introduction to OpenGL].

Continue reading

Projected Shadow Mapping with Cg and OpenGL

Projective Shadow Mapping

Projective Shadow Mapping

In this article, I will show how to implement projective shadow mapping in OpenGL using Cg shaders.
The basis of this post comes from the article titled [Transformation and Lighting in Cg]. I will assume the reader has a basic understanding of OpenGL and already knows how to setup an application that uses OpenGL. If you require a refresher on setting up an application using OpenGL, you can refer to my previous article titled [Introduction to OpenGL for Game Programmers].

I will take advantage of a few OpenGL extensions such as GL_ARB_framebuffer_object to create a offscreen framebuffer to render to and and GL_ARB_texture_border_clamp for clamping to the border color of the projective textures.

Continue reading

Normal Mapping with Cg and OpenGL

Environment Mapping

Environment Mapping

In this article, I will discuss a technique called normal mapping. Normal mapping is a shader technique that encodes pre-computed surface normals in a texture that can be used to add extra detail to a surface without the requirement of adding extra geometry. Before reading this article, you should have a basic understanding of OpenGL and you should know how to setup a Cg shader. For a review on OpenGL, you can refer to my previous article titled [Introduction to OpenGL for Game Programmers] and to learn how to incorporate Cg shaders in your own applications, you can refer to my article titled [Introduction to Cg Runtime with OpenGL].

Continue reading

Environment Mapping with Cg and OpenGL

Environment Mapping with Cg

Environment Mapping

In this article I will demonstrate an effect called Environment Mapping. Environment mapping attempts to simulate the effect of reflective or refractive surfaces in a shader rasterizer. I assume the reader has a basic understanding of OpenGL and Cg. If you require an introduction in OpenGL, you can refer to my article titled [Introduction to OpenGL for Game Programmers]. And for an introduction to Cg, you can refer to my article titled [Introduction to Cg Runtime with OpenGL].
Continue reading