Technical Articles

Home | Search | X-Zone News | Services | Book Support | Links | Feedback | Smalltalk MT | The Scrapyard | FAQ | Technical Articles


Articles by Category

Compiler Issue Articles
Direct3D Articles
DirectDraw Articles
DirectX 8 Graphics Articles
DirectX 9 Graphics Articles
Game Timing Articles
Program Structure Articles
Smalltalk MT Articles
Smalltalk MT FAQ
The Scrapyard


Complete Article Listing

DirectX FAQIndex of X-Zone's DirectX FAQs
Smalltalk MT FAQIndex of X-Zone's Smalltalk MT FAQs
Linearized Depth using Vertex ShadersIn this article we'll look at an easy way to implement linear depth values using a Z-buffer, by implementing transformation in a programmable vertex shader.
Texture Based Clipping DemoShows an alternate technique for clipping of geometry to arbitrary planes. This provides a high performance alternative to Direct3D user-defined clipping planes, and allows arbitrary clipping planes while using hardware T&L on devices that do not support clip planes.
Understanding the Dot ProductProvides an introduction to the dot product function, which determines the relationship of two vectors, and explores various uses of this function
Using W-BuffersProvides a look at the the mathematical and practical differences between Z and W based depth buffering. Includes code to detect W-Buffering hardware and implement W based depth buffers.
Introduction to Effect FilesThe first in a series of articles targetted at DirectX Effect Files, provides an introduction to the use of Effect Files with the D3DX framework. Effects allow the developer to define rendering techniques outside of application code. Benefits include greater flexibility for your rendering engine, support of various hardware capabilities, and a rapid integration of new objects and visual effects into an application without the need for changes to compiled code.
Rendering Full Screen Images from TexturesShows how to use textures to render full screen bitmaps, such as splash screens or backgrounds, using D3D primitives. Sample code includes detection of maximum texture size, and subdivision of images too large for hardware to load in a single texture.
Saving a Screen Shot in DirectX GraphicsSimple function to perform screen grabs in DX 8.1, with source code.
A Simple Blit Function for DirectX 8Shows how to use pre-transformed polygons to simulate a Blit function in Direct3D.
Locating an Application CDTechniques and source code that provide a reliable technique to scan a system for tour application's CD, and to prompt the user for insertion if it is not available. Handles systems with multiple CD-ROMs properly, and determines CD drive locations and volume names without unnecessary file reads.
Scaling and Centering of ID3DXMesh GeometrySource code for functions that allow a mesh to be rescaled to fit within specific bounds and/or centered at origin
Scaling and Centering of ID3DXMesh Geometry in DX9Source code for functions that allow a mesh to be rescaled to fit within specific bounds and/or centered at origin
DirectX 9 Graphics FAQX-Zone's FAQ on issues specific to DirectX 9 Graphics
DirectX 8 Graphics FAQX-Zone's FAQ on issues specific to DirectX 9 Graphics
FPS Versus Frame TimeProvides a critical comparison between common measurements used for overall performance testing, and looks at an all too common pitfall of using FPS as a measurement of performance.
Batching of Polygons with a Vertex CacheIllustrates the use of a vertex cache to improve performance by batching together smaller groups of triangles.
The ScrapyardA collection of cool samples available for download. Most are work in progress, yet great techniques are still demonstrated.
Shader Transforms with Non-Transposed MatricesShows how to use row-major matrices for transformation in a programmable vertex shader, avoiding having to transpose matrices used as inputs to a vertex shader.
Synthesizing Patches using Vertex ShadersVertex Shader Terrain Demo and Article
Introduction to Catmull-Rom SplinesExplains Catmull-Rom splines and their potential uses. Includes demo source and executable illustrating the use of Catmull-Rom splines for smooth animation along a path.
View Oriented BillboardsBillboarding techniques are utilized in 3D applications to orient a polygon to always face the user. This allows the application of a 2D image, such as a lens flare or images of foliage, into a 3D scene. By applying an image in this way, the illusion of complex objects or effects can be applied with a minimum of overhead.
Creating Subsets in ID3DXMeshExplains how to render subsets within an ID3DXMesh object, including setup of attribute buffers and mesh optimization.
Stencil Based Screen WipesProvides sample application with source code, illustrating the application of an alpha mask to the stencil buffer, and the use of this technique to create complex screen wipes between scenes.
Rendering 3D Scenes to Large Image FormatsIn this article we will take a look at a technique for rendering very large images in Direct3D, independant of available video memory. Inlcudes sample source code.
Color Keying in DirectX 8 GraphicsDemonstrates how to simulate color keying in DirectX 8 Graphics using alpha blending and the D3DX texture creation functions.
Modular Programming with DLLsThis article provides information and source code, that will allow you to easily implement a full screen DirectX application as a series of loadable modules.
Using the ID3DXMesh ClassDiscusses the basics you need to know to use the ID3DXMesh class, including mesh storage, using attributes to draw subsets, mesh optimization, and more.
Writing the Game LoopThe game loop drives the flow of the program, providing a heartbeat for synchronizing object motion and rendering of frames in a steady, consistent manner. Provides source code for a basic game loop using the Performance Counter, and provides automatic detection of the Performance Counter and fallback to timeGetTime if it is not available.
Selecting Timer FunctionsHow to select the right timer function for game timing. Includes information on various timer functions, including GetTickCount(), timeGetTime(), and the Performance Counter.
Implementing Steady MotionTo allow for variations in playback, it is important that motion within the game be scaled to frame time. This insures that motion is steady, and aids in synchronizing the motion of objects.
Using a Blit QueueLearn how to cache blit commands to make better use of the refresh cycle under DirectDraw. Includes source code for a blitting queue.
Projecting a Ray from 2D Screen CoordinatesDirect3D provides the means to project your 3D world onto the screen, but often 3D titles require the ability to convert screen coordinates into 3D, and to determine the objects that are visible at a location in the viewport. This article lies the initial groundwork required for establishing a ray pick routine, by providing algorithms and working code to convert a pixel coordinate into a ray in world space.
Improved Ray PickingSample application with source code to demonstrate object selection. This sample improves upon the DirectX SDK's Pick sample by handling separate object transformations, and also demonstrates transformation of objects in a hierarchial tree.
Smalltalk MT Faq - General Development IssuesAnswers to frequently asked questions regarding general development issues in Smalltalk MT
Smalltalk MT FAQ IndexSmalltalk MT Development FAQs
FVF Definitions for DX7 Vertex Types in DX8Provides Flexible Vertex Format (FVF) definitions for the standard DX7 vertex types. These are handy for those who are porting applications to DX8, and need definitions for their existing vertex formats.
DirectX General IssuesX-Zone's FAQ on general issues effecting DirectX development
Using Bounding SpheresIn this article, we will take a look at how bounding spheres are defined, and how they can be used for efficient course testing of collision.
First Look at DX8 GraphicsA look at some of the changes in the graphics APIs in DX8. This area is aimed at highlighting the changes that will have to be considered when making the move to DX 8 with your existing code.
Direct Sound FAQX-Zone's FAQ on DirectSound
Direct Play FAQX-Zone's FAQ on DirectPlay
Direct3D RM FAQX-Zone's FAQ on Direct3D Retained Mode
Direct3D IM FAQX-Zone's FAQ on Direct3D Immediate Mode
Direct Draw FAQX-Zone's FAQ on DirectDraw
Getting Started with Smalltalk MT and DirectXA hands on introduction to using Smalltalk MT with DIrectx. Provides step by step instructions for loading, executing, modifying, and debugging a DirectX sample project.
Differences between C++ and Smalltalk MTThis article shows some initial differences in syntax, operators and DLL usage between C++ and Smalltalk MT
Introduction to Smalltalk MTA Brief Introduction to Smalltalk MT.
Synchronization of Game ThreadsFirst in a series exploring the creation of multithreaded entertainment titles. Learn how to create worker threads and utilize them to dynamically manage processor load in your game.
Spherical Texture MappingThis article demonstrates the mapping of spherical texture coordinates onto an object. Includes sample code for texture wrapping a ID3DXMesh Object.
Simple DX8 FrameworkA good starting point for writing applications using DirectX 8 graphics. Provides full screen and windowed operation, and a high performance message loop.
Rendering to Multiple WindowsProvides information on source code necessary to develop applications that render multiple views in separate windows using DirectX Graphics.
DirectX in Borland C++Guest author Mikael Lundberg provides some clues to getting started using DirectX under Borland C++.
Color Depth Conversion of Bitmaps Using GDILearn how to convert pixel formats of loaded images to the format of the display surface. Includes source code for a function that provides image loading, format conversion, and color key setup in a single, easy to use function.

This site, created by DirectX MVP Robert Dunlop and aided by the work of other volunteers, provides a free on-line resource for DirectX programmers.

Special thanks to WWW.MVPS.ORG, for providing a permanent home for this site.

Visitors Since 1/1/2000: Hit Counter
Last updated: 07/26/05.