
Prep: The Graphics Pipeline In this preparation tutorial I will give an brief overview of the graphics pipeline. A basic knowledge of the steps that a graphics card performs while rendering is essential for using and understanding modern OpenGL. OpenGL is of course, a graphics rendering API. It provides functions for you as a programmer to generate primitives (triangles, points etc.) by specifying the vertices that make them. There are a few steps though between supplying the raw vertex data, and the framebuffer being displayed and this is called the rendering pipeline. Step 1. - Per-vertex Operations In this stage the vertices that are sent to OpenGL are normally transformed through the model-view-projection matrix into screen coordinates. Step 2 - Clipping and culling Primitives are clipped to the screen and faces that are marked for culling (e.g. backface culling) are culled before rasterization. Step 3 - Rasterization The vertices are formed into primitives and rasterized (filled in). Step 5 - Framebuffer
Amit’s Game Programming Information What’s on this page? I’m interested in producing complexity out of simple parts. This page contains bookmarks that I collected while working on games; I did not write most of the content linked from here. As a result the set of links here reflects the types of things I needed to know: only a few specific topics (not everything related to game programming), general ideas instead of platform-specific information (graphics, sound, compilers), and ideas and designs instead of source code (I find it easier to go from an idea to code than from code to an idea). Determining how to move around on a map is an interesting problem. These pages are about specific techniques for pathfinding and object movement: My current favorite algorithm is A*, because it can handle varying terrain costs well, and it seems to be faster than most graph searching algorithms. Code and Demos Many times I play a game and wish that the computer opponents were written better. What techniques are useful in game AI? Notices
Tutorial 1 : Opening a window | opengl-tutorial.org Welcome to the first tutorial ! Before jumping into OpenGL, you will first learn how to build the code that goes with each tutorial, how to run it, and most importantly, how to play with the code yourself. No special prerequisite is needed to follow these tutorials. All tutorials are written in “Easy C++” : Lots of effort has been made to make the code as simple as possible. You don’t have to know anything, but you have to forget everything you know about OpenGL. All tutorials can be built on Windows, Linux and Mac. Update your drivers !! Detailed procedures will now be given for each platform. Building on Windows Updating your drivers should be easy. In the Build menu, click Build All. Open C:\Users\XYZ\Projects\OpenGLTutorials\playground, and launch playground.exe. You can also launch any tutorial from inside Visual Studio. Building on Linux They are so many Linux variants out there that it’s impossible to list every possible platform. Install the latest drivers. Building on Mac
Getting Started So you want to take advantage of the power of the OpenGL API? If you are visiting this page because a game or software uses the OpenGL API, you need to install the appropriate graphic driver which enables usage of the functionality provided. To program using the OpenGL API, you need the driver and the development package (depends on platform and programming language). This Wiki maintains a FAQ page for OpenGL. Downloading OpenGL In all three major desktop platforms (Linux, MacOS X, and Windows), OpenGL more or less comes with the system. Windows Appropriate Windows driver websites: Some sites also distribute beta versions of graphics drivers, which may give you access to bug fixes or new functionality before an official driver release from the manufacturer: Guru3D Without drivers, you will default to a software version of OpenGL 1.1 (on Win98, ME, and 2000), a Direct3D wrapper that supports OpenGL 1.1 (WinXP), or a Direct3D wrapper that supports OpenGL 1.1 (Windows Vista and Windows 7).
Megan Fox's Blog - Game Engines 101: The Entity/Component Model The following blog post, unless otherwise noted, was written by a member of Gamasutra’s community. The thoughts and opinions expressed are those of the writer and not Gamasutra or its parent company. There are many approaches to game engine design, and this is far from the best in all cases, but it is certainly the most common overall. Welcome to the wide world of component-based entities. First, let's address the way most people fresh out of Data Structures, CS 101, etc think of game objects: class Engine { int numberOfCylinders; .... } class Car : Public Engine { bool hasComfySeats; bool numSeats; ... } ... which is, in a word - bad. Let's take a peak at why. So we stop just short of hanging ourselves, back out, and realize that that route is unsupportable. Thus - enter components. class Entity { void AttachComponent(ComponentType, argumentList, name) void DetachComponent(name) void UpdateComponents() void UpdateComponentType(ComponentType typeOfComponentToUpdate) class BaseComponent { Done.
Fluid Simulation for Video Games (part 1) By Dr. Michael J. Gourlay Download Article Download Fluid Simulation for Video Games (Part 1) [PDF 1.2MB] Introduction to Fluid Dynamics Video games appeal to our desire to explore and interact with our environment, and adding real-world phenomena-such as fluid motion-allows game developers to create immersive and fun virtual worlds. To get started in fluid simulations, you need to understand the fundamentals of fluid dynamics. What Is a Fluid? A fluid is any substance that flows (in other words, a substance that can take the shape of its container) and does not resist deformation (meaning that it slides when dragged). But what about smoke? Varieties of Physical Simulation Whereas fluid dynamics might not be as familiar to most video game programmers, some forms of physical simulation have become commonplace. Particles are points that have position, mass, and velocity but (in principle) no size or shape, as Figure 1(a) shows. Figure 1. 1D. Figure 2. Fluids have lots of freedom of motion. .
Simulating Particle Effects using OpenGL | 3D Game Engine Programming Particle Effect In this article I will demonstrate one possible way to implement a particle effect in C++ using OpenGL to render the effect. This demo uses the fixed function pipeline and the host processor (CPU) to perform the simulation. In this article, I will use OpenGL and GLUT to render graphics to the application window. If you do not know how to setup an application using OpengGL and GLUT you can refer to my previous article titled [Introduction to OpenGL for Game Programmers] available [here]. Particles systems have been used extensively in games for many years. Geometry Wars - Particle Example There are several different types of particle effects that can be created. Billboard Particles: Billboard particles are flat textured quads that are rotated to always face the camera. In this article, I will demonstrate the billboard particle effect. A few dependencies are used by this project to ease the coding process and to make the material more readable. The ParticleEffect Header File
An intro to modern OpenGL. Chapter 1: The Graphics Pipeline An intro to modern OpenGL. Chapter 1: The Graphics Pipeline updated April 5, 2010 17:12:05 PDT Table of Contents | Chapter 2 » OpenGL has been around a long time, and from reading all the accumulated layers of documentation out there on the Internet, it's not always clear what parts are historic and what parts are still useful and supported on modern graphics hardware. Update: Join the Reddit discussion. What is OpenGL? Another recent development has been the adoption of general purpose GPU (GPGPU) libraries, including nVidia's CUDA and Khronos' OpenCL. For these tutorials, I'm going to assume you're already a programmer and that you know C, but that you haven't necessarily seen OpenGL or done graphics programming before. Where do I get OpenGL, GLUT, and GLEW? OpenGL comes standard in some form or another on MacOS X, Windows, and most Linux distributions. To install GLUT and GLEW, look for the binary packages on their respective sites. The graphics pipeline The vertex and element arrays
I want to be a game developer... now what? With people looking to get into game development the same questions come up over and over, so I’ve opted to put my thoughts on the subject in one place and to compile a list of resources for new developers. Those questions? “I want to learn game programming, what language should I use?” “Should I use an engine, or create my own?” “What library/tools should I use"?” “Now what?” I will try to address all of these questions and more in the following post. For those of you that like skipping ahead to the last page in a novel, these links are for you! … the C++ question. Let me get the 800lb gorilla out of the way first of all. Alright, back to the whole C++ question. Don’t get me wrong, I totally understand why you want to go with C++, I’m just as guilty. Again, these are just my opinions ( and those of the vast majority of people that went down this road themselves! Now, if you did in fact make the decision to go ahead with C++, for the love of all that is holy, DO NOT USE DevC++. Do something.