视频选集 1.01 Introduction and Learning Outcomes 1.02 How to Take this Course 1.03 Words of Encouragement 2.01 Project Dependencies 2.02 A Quick Note for Windows Users 2.03 Project Folder Structure 2.04 The Compilation Flow 2.05 Working with Makefiles 2.06 Configuring Visual Studio on Windows 3.01 Creating an SDL Window密码 3.02 Rendering an SDL Window 3.03 Declaring a Color Buffer 3.04 Allocating Memory and Freeing Resources 3.08 SDL Texture 3.09 Fullscreen Window 3.10 Exercise. Drawing a Background Grid 3.11 Drawing a Background Grid 3.13 Exercise. Drawing Rectangles 3.14 Creating a Function to Draw Rectangles 4.01 Defining Header Files 4.02 Coding New Header Files 5.01 The Draw Pixel Function 5.02 Vectors 5.03 Declaring a Vector Type 5.04 Review of C Structs 5.05 Array of Points 6.01 Orthographic Projection 6.03 Perspective Projection 6.04 Implementing the Perspective Divide 6.05 Coordinate System Handedness 7.01 Vector Transformations 7.02 Review of Sine Cosine and Tangent 7.04 Rotating Vectors 7.05 Vector Rotation Function 7.06 Proof of Angle Sine Addition 7.08 Proof of Angle Cosine Addition 8.01 Fixing our Game Loop Time Step 8.02 Using a Delay Function 9.01 Triangles and Meshes 9.02 Vertices and Triangle Faces 9.03 Triangle Edges 10.01 Line Equation 10.02 DDA Line Drawing Algorithm 10.03 Coding a Function to Draw Lines 11.01 Dynamic Arrays 11.03 Dynamic Mesh Vertices and Faces 12.01 OBJ Files 12.02 Exercise. Loading OBJ File Content 12.03 Loading OBJ File Content 13.01 Back-face Culling Motivation 13.03 Vector Magnitude 13.04 Vector Addition and Subtraction 13.05 Vector Scalar Multiplication and Division 13.06 Vector Cross Product 13.07 Finding the Normal Vector 13.08 Dot Product 13.10 Back-face Culling Algorithm 13.11 Back-face Culling Code 13.13 Vector Normalization 14.01 Triangle Fill 14.02 Flat-Bottom & Flat-Top Technique 14.03 Activity. Find Triangle Midpoint 14.04 Solution to the Triangle Midpoint 14.05 Coding the Triangle Midpoint Computation 14.06 Flat-Bottom Triangle Algorithm 14.07 Flat-Bottom Triangle Code 14.08 Flat-Top Triangle Algorithm 14.09 Flat-Top Triangle Code 14.10 Avoiding Division by Zero 14.12 Different Rendering Options Solution 14.15 Colored Triangle Faces 15.01 Painter's Algorithm 15.03 Coding a Sorting Function 16.01 Matrices Overview 16.02 Matrix Operations 16.03 Properties of Matrix Multiplication 16.04 Examples of Matrix Multiplication 16.06 2D Rotation Matrix 17.01 3D Matrix Transformations 17.02 3D Scale Matrix 17.03 Matrix Typedef 17.04 Scale Matrix Code 17.05 3D Translation Matrix 17.06 Translation Matrix Code 17.07 3D Rotation Matrices 17.08 Rotation Matrix Code 17.10 The World Matrix 17.11 Order of Transformations 17.12 Translation is Not a Linear Transformation 18.01 Defining a Projection Matrix 18.02 Populating our Perspective Projection Matrix 18.03 Coding the Perspective Projection Matrix 18.04 Exercise. Projecting Negative Values 18.05 Projecting Negative Values 18.07 Row-major and Column-major Orders 19.01 Flat Shading 19.02 Coding Flat Shading & Light 19.04 Smooth Shading Techniques 19.06 Inverted Vertical Screen Values 20.01 Texture Mapping 20.02 Representing Textures in Memory 20.03 Texture Typedef 20.04 Textured Triangles 20.05 Textured Flat-Bottom Triangle 20.06 Textured Flat-Top Triangle 20.07 Barycentric Coordinates 20.08 Barycentric Weights (α, β, γ) 20.09 Function to Compute (α, β, γ) 20.10 Visualizing Textured Triangles 21.01 Perspective Correct Interpolation 21.02 PS1 Games and Affine Texture Mapping 21.03 Perspective Correct Interpolation Code 21.06 Inverted Cube UV Coordinates 22.01 Decoding PNG Files 22.03 Loading PNG File Content 22.04 Freeing PNG Textures 23.01 Loading OBJ Texture Attributes 23.02 Preventing Texture Buffer Overflow 23.04 Visualizing Textured OBJ Models 24.01 Z-Buffer 24.02 Z-Buffer Code 24.03 Exercise. Z-Buffer for Filled Triangles 24.04 Implementing a Z-Buffer for Filled Triangles 24.05 A Discussion on Dynamic Memory Allocation 25.01 Camera Space 25.02 Look At Camera Model 25.03 Look At Transformations 25.04 The LookAt Function 25.05 Coding the LookAt Function 25.07 Variable Delta-time 25.08 A Simple FPS Camera Movement 25.09 Coding a Simple FPS Camera Movement 26.01 Frustum Clipping 26.02 Planes 26.03 Exercise. Right Frustum Plane Point & Normal 26.04 Defining Frustum Planes Points & Normals 26.05 Initializing an Array of Frustum Planes 26.06 Defining Points Inside and Outside Planes 26.07 Intersection Between Line & Plane 26.08 Clipping a Polygon Against a Plane 26.09 Polygon Typedef 26.10 A Function to Clip Polygon Against Planes 26.11 Coding the Function to Clip Polygons Against Planes 26.12 Converting Polygons Back Into Triangles 26.13 Visualizing Clipped Triangles 26.14 Horizontal & Vertical FOV Angles 26.15 Clipping Texture UV Coordinates 26.16 Clipping Space 27.01 Working with Static Variables 27.02 Refactoring SDL Globals 27.03 Simulating Low-Resolution Displays 27.04 Refactoring Light Globals 27.05 Exercise. Camera Pitch Rotation 27.06 Implementing the Camera Pitch Rotation 28.01 Declaring Multiple Meshes 28.02 Implementing Multiple Meshes 28.03 Implementing Multiple Textures 28.04 Finishing our Implementation 28.05 Handedness & Orientation 29.01 Dedicated Graphics Cards 29.02 Modern Graphics APIs & Shaders 29.03 A Parallel Rasterization Algorithm 29.04 Determining Point Inside Triangle 29.05 Top-Left Rasterization Rule 29.06 Edge Function & Barycentric Weights 29.07 Edge Function & Constant Increments 29.08 Subpixel Rasterization 30.03 Next Steps