Check out Half-Life Re-imagined competition results!
Check out Skewing textures in Hammer, our newest tutorial!
Say hello to Henry00, our newest member!

# Poll

## Feeling Blue

What's your favourite shade of blue?

Azure

21

Cobalt

37

Turquoise

11

Cyan

17

Royal

11

Teal

3

5 mins

Penguinboy

20 mins

NineTnine

24 mins

Jessie

1 hours

Dimbeak

1 hours

Windawz

1 hours

Kurosaki Ichigo

2 hours

_Vissova_

# Painlessly Drawing TriAPI In Orthogonal Mode

## By Tony 'omega' Sergi

 Orthogonal Triangle Renderering inside The Half-Life SDKI decided to whip up this tutorial to show you the simplicity of drawing triangles in orthogonal mode using TriAPI. This is really simple, and I'm even doing all the work for you! An example regarding how to draw a quad over the entire screen is included at the end of the article.Step #1: Load up tri.cpp and add this shell at the very bottom:/*=================HUD_DrawOrthoTrianglesOrthogonal Triangles -- (relative to resolution, smackdab on the screen) add them here=================*/void HUD_DrawOrthoTriangles( void ){}Step #2: Open up HUD_Redraw.cppPrototype the function above redraw():void HUD_DrawOrthoTriangles( void );int CHud :: Redraw( float flTime, int intermission ){Step #3: Add the function inside redraw, so it's called:HUD_DrawOrthoTriangles is called from the HUD draw functions, because at this point the engine is already in orthogonal mode. Hence, the Z coord is a "magic 0", because it's not rendering in world space in ortho, it's 2D.               ...               pList = pList->pNext;          }     }     //omega;draw orthogonal triangles     HUD_DrawOrthoTriangles();     // are we in demo mode? do we need to      // draw the logo in the top corner?     if (m_iLogo)     ...Step #4: Make use of it!Example:#define ORTHOEXAMPLE#ifdef ORTHOEXAMPLEvoid OrthoExample(){     gEngfuncs.pTriAPI->RenderMode(kRenderTransAdd); //additive     // use hotglow, or any other sprite for the texture     gEngfuncs.pTriAPI->SpriteTexture( (struct model_s *)          gEngfuncs.GetSpritePointer(SPR_Load("sprites/hotglow.spr")),          0);     gEngfuncs.pTriAPI->CullFace( TRI_NONE ); //no culling     gEngfuncs.pTriAPI->Begin(TRI_QUADS); //start our quad     //remember, always list vertices in counter-clockwise      // order, unless you want the quad to be backwards =)     // the third value of vertex3f will always be 0 in ortho mode,      // don't change it unless you wan't funny things to happen.     //top left     gEngfuncs.pTriAPI->TexCoord2f(0.0f, 1.0f);     gEngfuncs.pTriAPI->Vertex3f(0, 0, 0);      //bottom left     gEngfuncs.pTriAPI->TexCoord2f(0.0f, 0.0f);     gEngfuncs.pTriAPI->Vertex3f(0, ScreenHeight, 0);     //bottom right     gEngfuncs.pTriAPI->TexCoord2f(1.0f, 0.0f);     gEngfuncs.pTriAPI->Vertex3f(ScreenWidth, ScreenHeight, 0);     //top right     gEngfuncs.pTriAPI->TexCoord2f(1.0f, 1.0f);     gEngfuncs.pTriAPI->Vertex3f(ScreenWidth, 0, 0);     gEngfuncs.pTriAPI->End(); //end our list of vertexes     gEngfuncs.pTriAPI->RenderMode(kRenderNormal); //return to normal}#endifvoid HUD_DrawOrthoTriangles( void ){#ifdef ORTHOEXAMPLE     OrthoExample();#endif}That about does it for this "tutorial". You now have the framework to draw triangles onto the hud with ease using TriAPI. Have fun, and enjoy! If you have any questions, email me at omega@thewavelength.net.-omega