Search the Community

Showing results for tags 'OpenGL'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Categories

  • Audio
    • Music and Sound FX
  • Business
    • Business and Law
    • Career Development
    • Production and Management
  • Game Design
    • Game Design and Theory
    • Writing for Games
    • UX for Games
  • Industry
    • Interviews
    • Event Coverage
  • Programming
    • Artificial Intelligence
    • General and Gameplay Programming
    • Graphics and GPU Programming
    • Engines and Middleware
    • Math and Physics
    • Networking and Multiplayer
  • Visual Arts
  • Archive

Categories

  • News

Categories

  • Audio
  • Visual Arts
  • Programming
  • Writing

Categories

  • Audio Jobs
  • Business Jobs
  • Game Design Jobs
  • Programming Jobs
  • Visual Arts Jobs

Categories

  • GameDev Unboxed

Forums

  • Audio
    • Music and Sound FX
  • Business
    • Games Career Development
    • Production and Management
    • Games Business and Law
  • Game Design
    • Game Design and Theory
    • Writing for Games
  • Programming
    • Artificial Intelligence
    • Engines and Middleware
    • General and Gameplay Programming
    • Graphics and GPU Programming
    • Math and Physics
    • Networking and Multiplayer
  • Visual Arts
    • 2D and 3D Art
    • Critique and Feedback
  • Topical
    • Virtual and Augmented Reality
    • News
  • Community
    • GameDev Challenges
    • For Beginners
    • GDNet+ Member Forum
    • GDNet Lounge
    • GDNet Comments, Suggestions, and Ideas
    • Coding Horrors
    • Your Announcements
    • Hobby Project Classifieds
    • Indie Showcase
    • Article Writing
  • Affiliates
    • NeHe Productions
    • AngelCode
  • Workshops
    • C# Workshop
    • CPP Workshop
    • Freehand Drawing Workshop
    • Hands-On Interactive Game Development
    • SICP Workshop
    • XNA 4.0 Workshop
  • Archive
    • Topical
    • Affiliates
    • Contests
    • Technical

Calendars

  • Community Calendar
  • Games Industry Events
  • Game Jams

Blogs

  • Michael Tanczos.. Gamedev.net code monkey
  • So much for Creativity
  • The nearsighted one cometh
  • Kylotan's Developer Journal
  • Rabbit Droppings
  • The Code Zone Bargain Basement Blog
  • Author, Programmer, Bag of Wind(TM)
  • Journal of Sneftel
  • Strife's Most Excellent Journal
  • Readme.txt
  • Journal of Null and Void
  • Dirty Hacks and Stupid Tricks
  • This is not a blog
  • Continuous Refinement
  • 23yrold3yrold's excessively awesome journal
  • Journal of Tiffany_Smith
  • Journal of The God
  • Journal of void*
  • Journal of UknowsI
  • The Mothership Connection
  • Journal of Sandman
  • Gaiiden's Scroll
  • Journal of LessBread
  • mittentacular
  • Journal of adventuredesign
  • Journal of WitchLord
  • Journal of cone3d
  • Ian's Blog Rants
  • Is this thing on?
  • There is no escape from the Washu
  • /* Why you crying? */
  • Journal #259850
  • Journal of Yann L
  • Fortress of Solitude
  • Insignificant Corner on the Wild Wild Web
  • T. Wade Murphy - Sketchbook
  • Journal of Woodsman
  • Journal of kevmo
  • Not dead...
  • Working late past midnight...
  • Journal of pi_equals_3
  • Adventures in Game Production
  • Journal of Drewish
  • Development, OSS, and pie at work
  • Rarely Spoken
  • evolutional.co.uk
  • Welcome to the bowels of hell
  • Journal of danbrown
  • Journal of __Daedalus__
  • Journal of a Magical Badger
  • The Mad World Of Me
  • Perpetual Alpha
  • Journal of Buzzy
  • The Storytelling Ape
  • Untitled
  • Reminiscence
  • Big Sassy's Ramblings
  • Journal of dthorp
  • Journal of benstr
  • Journal of Prairie
  • The Simplest Thing That Could Possibly Work
  • Journal of eklypse
  • Journal of falkone
  • Let
  • Journal of DarkZoulz
  • 0_o
  • Adagio for GameDev
  • MEY - Archive
  • Journal of Ysaneya
  • A constant battle with time
  • Journal of CoffeeMug
  • Journal of Clash
  • My personal space of thoughts...
  • Journal of Void
  • Journal of xEricx
  • Jorgander's journal
  • Journal of mohaps
  • Journal of SEHenley
  • Journal of EricMeyer
  • A view from the trenches
  • Journal of LorenTapia
  • Incoherent Ramblings of a Madman
  • Journal of _zombie
  • FRIZZLEFRY!
  • Journal of IronWolf
  • Designing: The Game and Its Content
  • Fuzzlr
  • Journal of Deltah
  • Game Development of the Graphics Type
  • Journal of IndyHood
  • Raptor's Den
  • Journal of Scott
  • Journal of NafdahliX
  • Journal of Stoffel
  • Journal of the Digital Hobos
  • J3's Joint
  • The NoMonkey Experience
  • Codex of the Modemancer
  • Journal of Blivvy
  • My Thoughts and Progress
  • Journal of Mulligan
  • Boring banter of a programmer.
  • The mighty journal of Raymondo
  • Journal of Nurgle
  • Journal of Bossk
  • Journal of DJHoy
  • One bastard's rants
  • Reprogramming my brain
  • Building the Sphere, one vertex at a time.
  • Journal of Kraiklyn
  • Journal of MonkeyChuff
  • Journal of jakem3s90
  • Journal of Shred
  • Journal of Erluk
  • Ramblings of a Red Dwarf addict
  • Beginnings of the Wayward Programmer
  • Journal of mattnewport
  • Journal of iNsAn1tY
  • MMO Indie? Can't Be Done
  • Journal of CGameProgrammer
  • Journal of scarmiglion
  • Mmm...soylent green...
  • _luridcortex
  • Journal of SeanHowe
  • Journal of Zophar
  • Journal of glincoln
  • Daedalus Development
  • World of Sshado
  • My GameDev Journal
  • Shell extensions, code design and fluff
  • Deux
  • Eh
  • A Keyboard and the Truth
  • The Unofficial 'Empyrean Gate' Journal
  • Journal of whaleyboy
  • Journal of RobertC
  • Journal of James Trotter
  • The Barracks
  • Untitled
  • Don't Click Here
  • Stupid .NET Tricks
  • Journal of JimboC
  • iosys Research and Development Journal
  • ... And on the 8th day, God created Pouya ...
  • Angry Cuttlefish's Fishtank
  • SteelGolem
  • Journal of onehundred
  • Drakkcon's journal
  • Alexmoura's Journal
  • Journal of thesadjester
  • zdlr's game development journal
  • Destructive Design
  • You are all weirdos.
  • Train of Thought
  • Andy Pandy's Magical Journal of DOOM
  • Any Colour You Like
  • Inane Ravings of a Mad Engineer
  • Adventures In Managed World
  • Compiling...executing...recompiling
  • Journal of codemonster
  • Journalgasm
  • Journal of digisoap
  • So long, Gamedev.
  • Journal of hothead
  • For The Storm! a Tribute to Netstorm :)
  • Journal of Magmai Kai Holmlor
  • Journal of JoeDorson
  • Amazing Journal
  • Journal of John Swidorski
  • Journal of benutne
  • Journal of caffeineaddict
  • Journal of Antonie_Bouman
  • Journal of Thygrrr
  • In Which Christopher Robin Buys Some Cheese
  • The Monkey Digest
  • Jinxed
  • Rixter by Rixter by Rixter by Rixter
  • Journal of Cold_Steel
  • NanoTera
  • Journal of MagicScript
  • Journal of a struggling Student
  • MyJournal.lnk
  • Journal of doomhunk
  • Sir Code Alot's Codex
  • Unbreakable
  • Journal of lethalhamster
  • Brain Drain
  • Journal of uto314
  • Not your journal.
  • Computer food
  • Journal of The Frugal Gourmet
  • Digital Scrawl
  • Journal of ToohrVyk
  • Journal of graveyard filla
  • A look into the mind of TheNobleOne
  • Journal of BioMors
  • "That wasn't dirty dancing, it was Salsa"
  • Brandon N's Journal
  • Journal of HughG
  • DogCity Adventures
  • Programmology
  • Journal of Bluehair_fr
  • Graham's Incessant Ramblings (gwihlidal)
  • noaktree leaves
  • ElJournalo
  • Booleans spiffy development journal
  • Journal of Pants
  • coldacid.dev.journal
  • Simple Foolishness :: Just What I Like
  • Journal of Raduprv
  • Journal of Prozak
  • Dave, The Mystical Workings Of...
  • Journal of kentcb
  • Rhaal's Journal
  • Journal of evillive2
  • mobile chronicles
  • Proverbial Max
  • Codename: Karma Online
  • krez's Amazingly Entertaining and Informative Journal
  • The Re-education of Maik Vidales
  • Ols (Away)
  • Yar
  • Writing Web Games
  • What's going on at TDLGames or TDLSoftware
  • DruinkJournal
  • The Meaning of Nahrix
  • Journal of Obscure
  • Drawing Lightning
  • Metaphorical Journeys of Happenstance
  • Journal of Eddie Hicks
  • Ubertainment
  • DavidRM's GDC Coverage
  • Sande's GDC Blog
  • Journal of KellyM
  • joanusdmentia::journal
  • Stompy's Gamedev Journal
  • How to finish a game in less than ten years
  • The Long Road to Making Games
  • Journal
  • Unhandled Exception
  • Journal of cm2
  • Journal of SanityAssassin
  • The sleeper must awaken... and code some.
  • Devnull's Log o' Geekery
  • markr's complete waste of time
  • Ahhh! I think I'm melting!
  • Journal of MrP
  • rhummer's Journal
  • Journal of CyberSlag5k
  • Journal of scubabbl
  • Journal of BlueDev
  • Journal of chadmeyers
  • Journal of Raisor
  • Journal of Undergamer
  • Journal of Hedos
  • Journal of robpers2003
  • Journal of NeHe
  • Nothing much of interest...
  • The Realm of Trial
  • Starving Programmer - Will code for food!
  • Journal of iduchesne
  • Journal of Kippesoep
  • On the path with a ramblin' man
  • You Gotta Squeeze Every Pixel
  • Lame? Where?!
  • Journey into a 3D World
  • Child of GDNet
  • Journal of finch
  • Journal of Hakiko
  • Journal of Lenox
  • Journal of LastUnicron
  • MrEvil's Journal
  • Journal of evelyn
  • Journal de S'Greth
  • donjonsons thoughts
  • Journal of dotnetted
  • The Tub of Awesome
  • Journal of EnemyBoss
  • Triangular Pixels
  • Radioactive-Software
  • Ubik
  • Journal of wasted_druid
  • Level-Grind Online
  • Journal of adam17
  • Sir Sapo... The Man ... The Legend
  • An Artist's Ramblings
  • Journal of LiyonDR
  • Thoughts from a Wanna Be Producer
  • Independent thoughts of PaulECoyote
  • Journal of Lab-Rat
  • Journal of Revelations
  • Gauntlets of Recursion (+3)
  • Journey to the Ancient Galaxy
  • Random things uavfun thinks are cool
  • NickGeorgia's GameDev Journal
  • Journal of jonpolly99
  • Brutally honest game dev stories
  • Journal of Lacutis
  • Clever Title
  • Beals Software
  • Journal of TheArtifex
  • Journal of Ranger Meldon
  • Journal of Pestilence64
  • Journal of jyk
  • Kudu's GameDev Blog
  • Tech: Arena
  • Journal of skittleo
  • Shiny Journal of Programmingness
  • Journal of LamerGamer
  • Programming. Academics. Life
  • Journal of unazona
  • Journal of CalvinCoder
  • Adventures in 3D
  • Journal of tstrimp
  • Journal of Xiachunyi
  • Journal of QuadMV
  • Neutrally Buoyant in a Sea of Productivity
  • Cypher's Journal
  • Journal of Nomad010
  • Journal of a freak
  • Journal of dcosborn
  • Journal of Nagashi
  • The XNA Struggle
  • Journal of Mrs Kensington
  • Journal of heavygearz
  • J of K
  • Journal of MikeWW
  • Distilled Brilliance
  • Journal of EvDaedalus
  • Journal of WillC
  • Necron00bicon
  • Jemgine
  • Big Trouble In Little Chairtown
  • Satisfaction Guaranteed*
  • Journal of munKiecs
  • NetSim: A Hacking Simulator
  • Almost Lackadasical Gamedev
  • Journal of cppgirl
  • Journal of PennstateLion
  • Journal of sathenzar
  • Journal of Trading Route
  • Journal of RingTek
  • Journal of Aiursrage2k
  • Journal of Kalidor
  • The Bag of Holding
  • Journal of Sages
  • Journal of fur (p2pmud project)
  • Journal of Landsknecht
  • Joshua Pilkington's Journal
  • Journal of JoriathLionfort
  • Maddox's Best Friend
  • Primal Damage
  • The Rambloring of Beldamir
  • #ifdef TRAPPER_ZOID
  • Journal of IronGryphon
  • 1000 Monkeys
  • Horror Stories of RanBlade
  • UberFantasticoSuperJournalRahr!
  • Ascending the Lift Hill of Life
  • shilblog
  • "Another genius foiled by an incapable assistant."
  • Exploring infinity
  • Journal of meix
  • Journal of Impeller Head Games
  • The scriblings of Samsonite 2007 AD.
  • Kazade's GDNet Life
  • SteevR's Deadly Development Mistakes
  • IBTL
  • The Moonpod Insider
  • Journal
  • I update. You read. Ok?
  • Journal of pink_daisy
  • In The Beginning
  • We stumble at noonday as in the dark.
  • Journal of Zipster
  • Journal of fearghaill
  • Evolve Games
  • No ninjas here, no really they are over there.
  • Journal of Caitlin
  • Journal of _winterdyne_
  • Journal of PreditorX0789
  • Journal of TyroWorks
  • Journal of AfroFire
  • The Whine Cellar
  • Journal of bargasteh
  • Journal of LilBudyWizer
  • Journal of CTar
  • Journal of furin121
  • Journal of Khaos Dragon
  • Untitled
  • Sheridan's adventures in random nonsense.
  • Nitrous Butterfly Developer Journal
  • Journal of Mephs
  • Journal of Nuget5555
  • Journal of xaver
  • Journal of Fahrenheit451
  • Captaiz Z
  • Journal of nts
  • Journal of rodgaskins
  • Chronicles of the Hieroglyph
  • Journal of Kuro
  • The Life of Corman
  • Journal of Kria Krabbit
  • Abwood's Coding Notes
  • extralongjournal
  • A love story: Me and my 2D engine.
  • Journal of sBibi
  • Journal of necreia
  • Dzz's Journal
  • Journal of Jervin
  • The journal of rpg_code_master
  • 2D Game Development with a splash of Mumbo Jumbo
  • Journal of Mordt
  • Journal of paradoxnj
  • The Wayward Druid
  • Journal of Tera_Dragon
  • darkpanda's awakening
  • Journal of Downer
  • Journal of RageHard
  • Journal of TommyA
  • Journal of kylecrass
  • Destination: Failure
  • Ye Olde Ramblings
  • Journal of Johnny Casil
  • Journal of C J W
  • Krizo
  • Journal of Zao
  • Journal of socrates200X
  • Journal of chapmast
  • Journal of rjhcomputers
  • The Broken Mind
  • Journal of ebner-wilson
  • Journal of SKREAMZ
  • Journal of astralvoid
  • Graphics is gooder and stuff
  • Journal of Talonius
  • Explicity undeclared yet implicitly defined ramble
  • UofU Team Journal
  • Journal of thedott
  • I am a duck
  • Delusions of Grandeur
  • Journal of kirkd
  • Exploration of pie and caek
  • Journal of slowpid
  • It's a hobby.
  • Subverting C++
  • Journal of Dreddnafious Maelstrom
  • Journal of marmin
  • Monkey Land
  • Dev. Blog of Empire Productions
  • Wiiiiiiiiiiiiiiiiiiiiiiiii!!
  • Slow progress
  • Journal of trailervoice
  • Illusive Studios
  • Journal of MindWipe
  • Journal of kmccusker
  • Ramblings of a partialy sane programmer
  • My Game programming journey
  • Adventures in Text-mode
  • Better Together
  • Journal of Kyle N
  • Journal of Genesis : Origins
  • NO
  • Project Kingstone
  • Brainfold
  • Journal of darkzim
  • Journal of jkielpinski
  • Dovyman's Journal
  • Journal of Goober King
  • Adventure Owns You
  • Journal of Sentientv2
  • Journal of mistermecha
  • Journal of sipickles
  • Prodigious
  • Bradley Sward - Small Game Projects
  • El Nino Games
  • Journal of Trefall
  • Tesseract's Game Development Journal
  • Mark the Artist Fights the Future
  • PumpkinPieman's Journal.
  • Get back to work!
  • Journal of Kevinator
  • Journal of Charles Thomas
  • Journal of erwincoumans
  • Journal of Michael Nischt
  • Journal of ukdm
  • Journal of Andrew Fults
  • Level editor in the works
  • Good Enough?.... Never!
  • Wijnand's Game Journal
  • Odorless Entertainment
  • Journal of blimey
  • Milkshake's Dev Diary
  • Journal of dist0rted
  • Journal of -JetSirus-
  • Bandit Revolvers: Championship Edition!
  • Journal of the enemy
  • Journal of soconne
  • Journal of valles
  • Journal of Aardvajk
  • Frog Blog
  • Journal of GreenGiant
  • Journal of ArNy
  • Developing Firebox
  • Journal of John_23
  • Journal of Luminous
  • Journal of CloudNine
  • The Enigma Code
  • bricklayer developers: Fountaindale
  • Journal of The_Neverending_Loop
  • Abort Button Software
  • Journal of Xrystal
  • Journal of Stuart Y
  • Journal of Jesse_P
  • H3O + U-235
  • Journal of a Shaven Ape
  • metaverses
  • Journal of C0D3Name
  • Journal of binaryguy
  • Journal of a wannabe game programmer
  • Journal of Fortia
  • Journal of dracan
  • Journal of boto
  • iLiNX
  • Journal of a undecided
  • Journal of cwestbrook20
  • Yet Another Game Maker
  • Journal of smc
  • The Journal of Thraed, Shadow of Fahrenguard
  • Journal of webjeff
  • Journal of phantom-soft
  • The Wild West of Programming
  • Journal of tribalKris
  • shadowcomplex's stuffs
  • Journal of IceSynth
  • Journal of Tesl
  • Surreal Sensations
  • Journal of AlexLoren
  • Journal of Ronnie Howell
  • Indisputable Tales of Interest
  • Journal of KGodwin - Newbie Game Dev
  • Wills' Wishes
  • Journal of miminawewe
  • Journal of DavidNeal
  • soggyfries
  • Journal of Tallitus
  • Promit's Ventspace
  • Journal of FunLogic
  • Journal of cheops2007
  • Journal of Sensei Maku
  • A Developer's Dream
  • Journal of VanillaSnake21
  • The ballad of a n00b
  • Journal of mattdev
  • Your company name here
  • The Richest Beggar in the World
  • Synbios128's Journal
  • Journal of AnthonyN1974
  • Journal of acappella
  • Journal of deerslyr1
  • Journal of Dragoro
  • Journal of Damon501
  • This Is My Story
  • Evil Stick Man in Evil Stick Land
  • Journal of noNchaoTic
  • Journal of Journaling
  • Phyletic gradualism
  • Fallen, oh dear :
  • The Byproduct of Facts and Fiction
  • Journal of Adam Hamilton
  • WISP
  • The Lion amongst the code
  • Abliss Gamedev
  • Once a Bird
  • Yeah
  • Journal of ShaneHeres
  • Orbital Fan's game development journal
  • Journal of VikingDK
  • Journal of zedz
  • Kiryn's Development
  • Defeating procrastination one post at a time!
  • Journal of HeftiSchlumpf
  • Journal of Scint
  • Journal of MattWhite06
  • Journal of Funkymunky
  • Under a ShadowyTree
  • Frogames adventures
  • Journal of Treesong
  • Brandogon's Journal
  • Alaklin's workshop
  • The never-ending story...
  • Journal of GreenToad
  • Journal of TiredofSleep
  • CAN Games Development Journal
  • What is Interactive Art?
  • Verg-o-nomics
  • Excursions into the Unknown
  • My Epiphany
  • Brain spasm
  • Brian Hoffer's Journal
  • BrokenThorn Entertainment
  • Journal of terry_burns85
  • Old code never dies, it just fades away
  • Journal of ChrisE
  • Journal of ShadowRancher
  • Journal of Dark Matter
  • Journal of mikalar
  • Journal of Moss
  • The Mystic work of Chad
  • Jason's journal
  • UserJP's Journal of Doom +4 ( Imbued with Fire )
  • Quanta's Journal
  • Journal of InnocuousFox
  • JasonP Works It
  • Every Semicolon
  • Data Spire
  • Blue stain
  • Journal of hashin
  • Journal of s3r1n
  • IndieZen Developers Journal
  • OddGames development journal
  • Journal of rvdwerf
  • Memoirs of a Graphics Engine
  • Journal of DraconisRavenix
  • Journal of dbaumgart
  • Journal of Nytegard
  • Archipelago
  • The truth between the lies
  • Journal of kornman00
  • Journal of EvanWeeks
  • Journal of _ArmuT_
  • Journal of stenol26
  • Journal of Besome Games
  • Journal of Palish
  • Journal of binchawpz
  • Magpie
  • MJP's Last Stand
  • Journal of theOneAwaited
  • Journal of EliteCoder
  • Journal of Pluvious
  • Journal of Veslefrikk
  • Journal of Vyper_uk
  • Journal of ExcessNeo
  • Mammal Games
  • Journal of Rascal
  • Laura's Game Journal
  • Robot, Ninja, Pirate, Monkey
  • Journal of Synthros
  • Journal of PsychoPumpkin
  • Rex of the Arx
  • Leandro's endeavours on managed code land
  • Journal of Moore452
  • Chronic Procrastination
  • Journal of Lode
  • Z Axis Games
  • Frisson
  • Journal of +1Games
  • Journal of kapilkapre
  • Journal of Taharez
  • Journal of xtBones
  • Journal of tinac2008
  • Life in the cereal box....
  • Journal of SilentSiren
  • Omegaice's Dev Journal
  • MMORPG Development
  • Journal of NowSayPillow
  • Pixelante
  • nerd_boy's journal
  • Journal of Remus Turcuman
  • The Log: Cloud Ocean
  • Journal of Jaap1978
  • Journal of Mak
  • Journal of lucius
  • Don't forget, it's supposed to be fun!
  • Journal of DarkPsychosis
  • Journal of rolkA
  • Journal of Sastrugi
  • Journal of 4fingers
  • Journal of nsmadsen
  • Just Glad to Be Here
  • Journal of MS Larsen
  • Ep's tool-dev diary
  • lightassassin.log
  • Journal of 2disbetter
  • Crawling with ideas
  • Journal of nightwreath
  • IfThen Software
  • Academia
  • Journal of ID Merlin
  • Journal of digitalerr0r
  • Journal of Hi Speed
  • Journal of Anexa85
  • Journal of ZootSuitGames
  • Journal of jrmcv
  • Journal of Earthania
  • Journal of Lethargic Programmers
  • The Adventures of a Universal Traveller
  • Merry Prankster Games
  • Journal of caldiar
  • Journal of Darkrider0318
  • Journal of davepermen
  • Journal of Encicra
  • Software Renderer in 28 days
  • Journal of DrSizzla
  • Journal of brainstyler
  • Journal of linternet
  • Journal of matt_j
  • Untitled
  • Journal of m3sh
  • My Newbie GD Journal
  • Journal of smr
  • Drew_Benton
  • Journal of FeverGames
  • Windows [Phone | 8] musings
  • Journal of popcorn
  • Journal of gytha
  • Isolate Development
  • Journal of MrCpaw
  • The Pixel Ocean
  • Journal of Zubski
  • Journal of inferno82
  • Journal of mikeman
  • Starting Thoughts
  • Journal of stimarco
  • dwn
  • Tachyon Wars
  • Journal of AndrewA
  • Journal of rip-off
  • Treehouse Gaming
  • Journal of Tom
  • Journal of rohde
  • Journal of wicked357
  • Journal of Roo Avery
  • Journal of Tower City
  • Journal of geekster
  • Graphics Engine Development
  • Journal of hGonzalez
  • Journal of Caste
  • Skipping a D
  • Journal of Matt328
  • Elucidation
  • Battlefield simulation engine
  • Journal of AEdmonds
  • DudeMiester Speaks!
  • Technical Artistry
  • Journal of Exide
  • Mason's Journal
  • istar's Game Life
  • The Greatest Development Journal Ever Written
  • A Traveller's Tale
  • Journal of foursticksj
  • Robot University -- a 2D DirectX Puzzle
  • Journal of KnivesAldren
  • Journal of jerrywilkins
  • Tales from the Veggie Patch
  • Journal of jnbutler
  • Lonely Hearts Club
  • Journal of Rakshasa
  • Journal of OmegaDog
  • Journal of Machaira
  • Journal of damix911
  • Journal of Richard Geslot
  • Dark Horse Software
  • Digital adventures through the third dimension
  • Gnoblins - Development journal of an indie game
  • Journal of ThomasBelgium
  • Wavesonics Pseudo-Random Journal Generator
  • Yckx's GameDev Journal
  • Tales of Ozak
  • Journal of nes8bit
  • Journal of bgund001
  • tinyrocket
  • Think Small
  • The YAR Project
  • Journal of Christopher Loyd
  • Journal of Vanderry
  • Journal of Ariste
  • Journal of namar777
  • Feathers and Code
  • Journal of Mussi
  • Dans Journal
  • Journal of Drakonite
  • Wilhelm's Journal
  • Journal of Laval B
  • Journal of Sybalos
  • Journal of dx elliot
  • True, False, Maybe
  • Journal of dragongame
  • Journal of ManuelMarino
  • Journal of wpalmer
  • Journal of KezraPlanes
  • ProgrammerMattC's Journal
  • Journal of reversinguy
  • Rants Etc.
  • Journal of daveodonoghue
  • Journal of Lunarjax
  • Journal of ShabbaStoney
  • Journal of Dwarf King
  • Journal of Lee Stripp
  • Rendering Systems
  • My C++ Journey
  • Journal of LarryWP
  • Journal of Daivuk
  • Journal of spacemoses
  • Journal of Sam Hagelund
  • #!/Bin/Bash-ObsidianBlk
  • etodd makes games
  • liger13's Blog
  • zer0wolf's Blog
  • davepermen's Blog
  • SageKri's Blog
  • Neutrix's Blog
  • speciesUnknown's Blog
  • FAR Colony's Blog
  • megamoscha's Blog
  • In the year 4016...
  • Lightning Engine
  • kiwibonga's Blog
  • Revenge of a Buzz Saw
  • InvalidPointer's Internets Rambling
  • KulSeran's Blog
  • Drilian's House of Game Development
  • alfith's
  • Ravyne's Blog of Blogs
  • cowsarenotevil's Blog
  • AndrewBC's Blog
  • JoeDev
  • Uncertanities, pitfalls and lesssons
  • martin_bfg10k's Blog
  • ScottsCreations' Blog
  • The Journal Of Luckless
  • Pixel ? Tile ? World
  • Fastcall's Development Blog
  • Blog 3.0
  • owl's Blog
  • dwarfsoft [GPA]
  • Seaßourne's Blog
  • mytre's Blog
  • Kevin's Blog
  • Gaetano Lenoci GameDev Blog
  • chench's Blog
  • fcoelho's Blog
  • Shozan's Quest
  • A Zombie Wedding
  • TheHinch
  • Dev Notes
  • kseh's blog
  • MichaelT's Blog
  • Mastrgamr's Blog
  • Life in Code
  • Mental(FrameRate)
  • The Animal Farm GameDev Blog
  • brslocum's Blog
  • Lost in the Catacombs of Game Development
  • LambdaRogue Development Blog
  • In the Shade
  • Moe's Blog
  • (O_o)
  • Blog
  • Scourage's Blog
  • Tocs' Blog
  • Ezbez's Blog
  • Liheike's Blog
  • Blendium's Blog
  • Madhed's Blog
  • Out Of The Ashes
  • stonemetal's Blog
  • Lords of Midnight Development
  • MarcotteR's Adventures in Research and Development
  • Coding in the Fast Lane
  • Lavinski's Blog
  • Leadwerks Developer Blog
  • MaskedAvenger's Blog
  • XXChester's Blog
  • Just Let It Trickle
  • assainator's Blog
  • Okiedoke!
  • HzerDown's Blog
  • Random Rantings
  • diablos_blade's Blog
  • Airy's Blog
  • HydroxicAcid
  • Igroman's Blog
  • Imgelling's Blog
  • px's cleverly named blog
  • JamesPenny's Blog
  • LogicalError's Blog
  • Splinter of Chaos' Blog
  • The Game Prodigy - GameDev.net Edition
  • Retronator
  • Rulers of the Known Universe
  • Exiled Dimension
  • Katerina's Blog
  • kasonerap's Blog
  • Crage Games' Blog
  • Mastering MMORPG3
  • Emotion Rays DevBlog
  • Adam Omega
  • The duckpond
  • Cross Mobile Gaming
  • Henry Prescott's Portfolio
  • 15 minutes of fame and an eternity of shame
  • Kristof's Game Dev Blog
  • wakahana's Blog
  • sdaq overflow
  • Kimmi's developer blog
  • Lightning Bolt Games
  • Tutorials By Andy Esser
  • BulletOtaku Games Journal
  • Eclision Programming Team
  • New Old Things
  • They don't teach this stuff in school
  • Glow engine Journal
  • Drennen's Journal
  • Jake's Journal
  • A non-programmer's programs
  • Hexagon's Journal
  • Mobeen's Journal
  • EndersGames' Journal
  • Minastas Games
  • Ali Akbar's Journal
  • Butabee's Journal
  • Dragon's Nest
  • Stop playing, start coding!
  • G-Truc Creation
  • Ninja GD
  • Slav2's Journal
  • NickyB's Journal
  • Jastiv's Journal
  • PARPG development blog
  • Romnia007's Journal
  • rachoac's Journal
  • Product Review Blog
  • developing gordebak
  • AciDGraphit3's Journal
  • SFAgent24 Developer Journal
  • Milcho's Journal
  • MikeTacular's Journal
  • The Start and Journey of Sound Creation
  • GDC 2011
  • Hypnotron's Saga
  • glaeken's Journal
  • Robot Ramblings
  • vicviper's Journal
  • jMonkey Business
  • Project Simplicity
  • alphablackzer0's Journal
  • gasto's Journal
  • InfectiousGames Brand NEW journal!!
  • GuardStar's Journal
  • MysteryMeat's Journal
  • deks' Journal
  • T-JAM Studios Journal
  • sk84z's Journal
  • Dace's Journal
  • Adrenaline's First Huge Project
  • Digivance Game Studios
  • Tomasz Dabrowski's Journal
  • Jacobean's Journal
  • Quiet Ponderation
  • Peter Vaughn's Journal
  • J-Snake's Journal
  • nomura's Journal
  • Opt7ons' Journal
  • gharen2's Journal
  • SymphonyOfDream's Journal
  • standingguy's Journal
  • ArtyjayStudios: A fistful of fail.
  • 3D BYTE Technology Blog
  • Aeroflot's Journal
  • Michael J Pierce
  • Datahammer dev blog
  • Bullet Points
  • Sappharos' Journal
  • Pendragon274's Journal
  • Daniel E's Journal
  • From Nothing to Everything
  • ballerplaya's Game Dev Blog
  • Twisted Shield Interactive
  • Menopia's Journal
  • The Legends of racoiaws
  • Andrew Kabakwu's Journal
  • BlueGlutton's Journal
  • StudioZx Journal
  • Lucas Daltro's Journal
  • zerothrillz's Journal
  • GameDev.net Staff Journal Old
  • Matthew Wood's Journal
  • RedPin's Game Jorunal
  • DeeMOONger's Journal
  • Locke's Game Dev
  • Lloyent's Journal
  • Wildlander's development blog
  • AmzBee's Journal
  • Kaushik's Journal
  • Shawn Hargreaves' Blog
  • Xerron's Journal
  • Mario Cavett's Journal
  • BauAir Studios
  • Jacob Gardner's Journal
  • TiagoCosta's Journal
  • Cypharr's Journal
  • loveworld99's Journal
  • Songbird's Journal
  • Oddbird Games
  • IsNe's Programming Journal
  • Firework Factory Development Journal
  • TheLogster's Journal
  • Little Coding Fox's Journal Of Exotic Adventures
  • Hexagon2D
  • TKE Super Dave's Journal
  • andi's Journal
  • Tim Sarbin's Open Wars Journal
  • Jaye's Journal
  • Vermaelen's Journal
  • The 'Massive' Project
  • Marek A. Krzeminski, MASc
  • The Road Less Traveled
  • Inclemency Studios Log
  • Short-Story about Meteora(My dev team)
  • Fox89's Journal
  • Trivigy's Journal
  • FetDaniel's Journal
  • Browser based RTS in the making
  • MortenB's Journal
  • LastContract
  • Developer Quest: Journey of Hope
  • Mayatrone's Journal
  • Vaguely In Focus
  • Starting up as a new company
  • __Homer__'s Journal
  • Sketching the Surface
  • Fubar the game - Developers Journal
  • StephanieRct's Journal
  • daver64's Journal
  • Mozly's Journal
  • Venfer's Riddle RPG/Puzzle game devjour
  • The AdaptivElite Developer's Journal
  • resell4's Journal
  • 2pacfarrar's Journal
  • Karim Kenawy's Journal
  • bandicootzcrib's Journal
  • grandiz3r's final gaming assault
  • ElementCy's Journal
  • Shadows, instruments and ohh my
  • Rattrap's Journal
  • XDaWNeDX's Journal
  • Eliad Moshe's Journal
  • ChugginWindex's Journal
  • Slyxsith's Journal
  • MutedVision
  • r1ckparker's Journal
  • ashkan_203's Journal
  • Project: CharWars
  • luckeytree's Journal
  • Journal of Suspense
  • PREDATOR_UK's Journal
  • Walking Towards The Sun
  • Trucking on
  • Zeypher Rise to Power
  • Keeping up with yesterday
  • vibrunazo's Journal
  • tangentstar's Journal
  • Accountability Journal
  • carlosx's Journal
  • EtherFields' Journal
  • mobilus' Journal
  • AnotherGS' Blog
  • Web by Day, Games by Night.
  • void* journal
  • N.O.W.
  • sosa's Journal
  • Cam's DevLog
  • Disciple of Jonato
  • StarDust DevLog
  • Paradigma11's Journal
  • GSoC '11 - Mono Runtime
  • D Bits
  • The Design Conundrum
  • DrTorte's Journal
  • Mobile RPG
  • 5MinuteGaming's Journal
  • KingofSwing94's Journal
  • Arc Fusion Games' Journal
  • ebontide's Journal
  • Yang G's Journal
  • Arcade Zombies
  • Xaviarrob's Journal
  • Stepping into demons lair
  • Rodimus and Unity
  • Linkfan88's block world journal
  • MeowMeow's Journal
  • A shooter game for all ages
  • The Failure Epiphany
  • Bregma's Persistent World
  • Nik02's Journal
  • lask1's Journal
  • Vic's Journal
  • sketckasketch's Journal
  • Last Engine
  • nife
  • Booniverse
  • Muzz5's Insane Witterings
  • Joe Storm's Journal
  • Switchblade_77's Journal
  • Eiffel's Journal
  • Graphics & Games... or the other way around
  • phara0h's Journal
  • IggyT's Journal
  • ElusiveCoder's Journal
  • Thoughts and Opinions
  • scout113's Journal
  • notyourbuddy's Journal
  • MERKB's Journal
  • Mr Moose's Journal
  • AAKN's Journal
  • TheEvilMuffinator's Epic Adventure
  • Cat Scratchings
  • FreeStejler's Journal
  • Gerónimo Garcia, a game developer
  • zacaj.devlog
  • TC's Journal
  • Luc the Whiny Wind Boy's Journal
  • Tactical Recon Dev Journal
  • OmensDev's Journal
  • OMG NUB!
  • Irvin's Journal
  • ZSG Development Journal
  • MrCodeSushi - Raw and Tasty Code!
  • bls61793's Journal
  • 3D Models for Games
  • T e c h l o r d's Journal
  • Santisan's Journal
  • ZenithSal's Journal
  • Reflections of a Mindless Individual
  • Polar's Journal
  • RetLee's Journal
  • Journey To Hammerdale Devlogs
  • BigDaveDev's Journal
  • bugbuster77's Journal
  • Survivor Game Journal
  • GoofProg.F's Journal
  • gash's Journal
  • Ghavami
  • blltdgr's Journal
  • marcelomp's Journal
  • ZARS Dev Journal
  • Joe P's Journal
  • Discouraged Programmer
  • Real Time RayTracing and implicit modeling
  • Space Exploration/Action RPG hybrid reliant on UGC
  • Random Developments
  • The Newbie Chronicles
  • Mark's Journal
  • DeXmas' Journal
  • Betable's Journal
  • parowoz's Journal
  • Topblast_'s Journal
  • CopperpotQ's Journal
  • japro's journal
  • Merlin3D Development Journal
  • SuperMaximo93's game development
  • Hect
  • Alberta online
  • DIEVOLUTION DevBlog
  • vodku's Journal
  • Codinguy's Journal
  • One man show
  • frang75's Journal
  • Calculemus's Journal
  • ConorJH's Journal
  • DaedalusK71's Journal
  • undead's programming corner
  • SubgateUniverseDevLog
  • Maciekp's Journal
  • Truxton's Journey into Game Development
  • -=cmaster.matso=-'s Journal
  • Not enought samples
  • Eigen's Journal
  • After Hours - and Then Some
  • Dylan's Journal
  • MelKay's Journal
  • Starpires - Space Strategy
  • StormJournal
  • QuestLore devblog
  • Journal of the Mini-Engine (ME)
  • Gl_Terminator's Journal
  • Terminal 0.1 Log 03
  • Odiee's Journal
  • Noisecrime's Journal
  • IMPACT Engine Development Blog
  • asm0day's Journal
  • YodamanJer's Journal
  • Learning Game Programming
  • The Beginning
  • GuardianResearch
  • Dumping Thoughts
  • lanemax's Journal
  • LaneMaxwell's Journal
  • IceFall Games
  • Ashnor's dev journal
  • moodywine's Journal
  • Thomas Amaranth's Journal
  • LoreHunter's Journal
  • VJ01's Journal
  • IronReaverGames Journal
  • OutlawZen's Journal
  • Xealgo's Tumblr Blog
  • Rich Markle's Journal
  • bigxow's Journal
  • Unity3D and AI Game Development
  • Project Updates
  • Lyost's Journal
  • AffenCode Blog
  • davispolk's Journal
  • LightSource Team's Journal
  • Midnight Thoughts
  • Subliminalman's Journal
  • AltairDali's Journal
  • NFL 2011 Talk
  • Valvatorezj's Development Journal
  • Silviu Andrei's Journal
  • Slaton's Journal
  • FlyingSpork's Journal
  • From AiGameDev's Secret Lab
  • FLeBlanc's Journal
  • sampad's Journal
  • Meh Entertainment
  • DeGod's Journal
  • dev.mind
  • ZEJOKER13's Journal
  • swiftcoding
  • paka3d's Journal
  • Lior Tal's Sandbox
  • The Forgotten Planet
  • Rav3nSt0rm's Journal
  • Litheon's Journal
  • ddn3 journal
  • Yacjys
  • I am a beginner and clueless.
  • Adventures in GameDev
  • Mallach's Dev Blog
  • mortalmarshy's Journal
  • Triax Bridge Command
  • EddyDownload's Journal
  • David Amador Journal
  • WorldAlpha.com DevBlog
  • DevDog82's Journal
  • Halley62373's Journal
  • pygame
  • Untitled zombie game
  • alwynd's Journal
  • Lucasnj's Journal
  • johnnycash's Journal
  • George Laskowsky's Journal
  • Eastfist Builds a Machine
  • Allar's Journal
  • irrationalistic's Journal
  • Bidimensional Dreams
  • Jeason's Journal
  • MikeDodgers' Journal
  • BrianTheProg's Journal
  • ZorgaGames Journal
  • Dreaming's Esoteric Teachings
  • compscialien's Journal
  • sythe's Journal
  • turbello's Journal
  • Xanthier's Journal
  • Flowers In Tears' Journal
  • Chris's Animation Blorg
  • Shaker25's Journal
  • SpeedRun's Journal
  • JetStone's Journal
  • sirkibble2's Journal
  • The Shadow Journals
  • Overm1nd's Journal
  • TommyForesd's Journal
  • LeonidValess' Journal
  • Black-Rook's Journal
  • My project blog
  • Mayley's Journal
  • Azure Acres
  • darc koder's Journal
  • Earthwalker's Journal
  • The Hitchhikers Guide to Video Game Production
  • LarryADaniel82's Journal
  • 2D Game Making, the Easy Way
  • DMFirmy's Development Blog
  • Giliam's Journal
  • Notes
  • The Curiously Recurring Gimlet Pattern
  • Zach's Development Journal
  • Dukandia
  • Under Development Law @ GDNet
  • #AltDevBlogADay
  • Digitalis Digoxin
  • Hedron Online Development
  • BlueStar03
  • Library of links to movies
  • SCForest's Journal
  • Heath's Journal
  • Malachor's Journal
  • Craftwork Games Blog
  • Behind the Scenes of Mirthwerx
  • omnomnom's RPG journal
  • Gaiiden's Journal
  • Overview Journal
  • Severed Infinity
  • Creating a Grand Strategy
  • Life at Demergo Studios
  • RADICAL HEROES: CRIMSON CITY CRISIS
  • Adam's Lair
  • Vilntus Entertainment
  • Lateral Creation's Journal
  • nodeg's learning journal
  • Eating The Elephant
  • Cbear's Dev Journal
  • The Siege Released
  • GDC 2012
  • ChezNoir
  • Journey Into Game Dev
  • Ya2's Journal
  • theNewb1e's Journal
  • Boreal's Dev Journal
  • www.Dubious-Games.co.uk
  • _Suezo_'s Journal
  • Lemon Treehouse
  • TechnoFlux
  • GrayMatters
  • Computational Contemplations
  • StarInc Android Development
  • Narf the Mouse's Journal
  • Antilia Development Journal
  • SpaceBeam development
  • Nocturnal Ferret
  • Tdawg30's Journal
  • Making the 'Rituals'
  • Timelines: Assault on America
  • Gunthera's Journal
  • Anthropocene: A Browser-Based Text RPG
  • AndreaTux's Journal
  • Rendering Is Fun
  • Emforce's Journal
  • _moagstar_'s Journal
  • Journey to Ironbane
  • Tipsy's Journal
  • Nick's Corner
  • Methods of A Madman
  • B O N E S' Journal
  • i-tech's Journal
  • Zul's Journal
  • kruncher's Journal
  • Misadventures in Game Making
  • WubWub Games
  • The Proverbial Bottom Rung
  • MidnightTangent's Journal
  • Bharath Raghavan's Journal
  • Stuff Games
  • From Pixel to Product
  • MissMarble's Journal
  • | dxCUDA | software development journal
  • Ralph McJournalstein
  • HorangiSoft
  • Flight of the Journal
  • Thekill473's Tinker Shop
  • Staring into the Moon
  • Mr Jones' Journal
  • BlackWingedGames' Journal
  • ChinaJoy CGDC 2012
  • A Weird Journal
  • necros devblog
  • CodeImp Game Developments
  • Face Punch Games Devblog
  • Sparked Studios Games
  • nighttime development
  • Coding In Transit
  • Journal
  • Kazuo5000's Journal
  • TMKCodes' Journal
  • miicchhii's Journal
  • Framework Philosophies
  • Journal of the Burning Hand
  • Warbringers - hotseat pvp game
  • Tyberthia Learning Experience
  • 2D MO Game
  • SIC Games' Journal
  • RATED-RKOFRANKLIN's Journal
  • Severin's Journal
  • lwm's Roa Journal
  • n00b0dy's Journal
  • uwi2k2 - Part Time Game Dev
  • Bluefirehawk's: "Path to World Domination"
  • Project Veritas - Working title
  • An Engine Through Time and Space
  • Epic Zombie's Journal
  • Bon Ink Creations' Journal
  • Aeronel's Journal
  • My Journey
  • vee's game development blog
  • The Long Road of Simulation
  • TestRoom
  • Amateuriffic
  • Alex Hopkins' Journal
  • Game Project #1
  • Project NN
  • Hostile Viking Studio Development
  • First game for Android
  • Jonathan's Journal
  • The Dwarfenheim Journal
  • codingnoobie's Journal
  • Will push pixels for food
  • Funstorm Dev Blog
  • Synchrex Studios Dev Blog
  • Tales of Allula: Crystal Spirits Development
  • Realm Chronicles developer's blog
  • dmdSpirit's Journal
  • Empyrios: Prophecy of Flame
  • Horizon Dev Journal
  • Corey Hoard's Journal
  • Freya's Journal
  • Hannah Wood's Producer Journal
  • Aurioch's Time Machine
  • achild's Journal
  • Retro Grade
  • Little Sticky Destroyer
  • C# Workshop - Some reedits.
  • creatures-of-gaia.com
  • Adventure Through Game Programming and Development
  • ellisvlad's MMORPG Development Journal
  • FantasyCraft's Game Engine Development
  • The life of a Unity Developer
  • My First Journal
  • Alex.SilR's Journal
  • Nathan's Blog
  • theartist493's Journal
  • Black's Tales
  • Fran Bow, a point & click adventure
  • Aaru's Journal
  • Drayan's TechBlog
  • Journal.Unknown
  • Josh Hartley's Journal
  • A long, frozen Path
  • Game Dev: P-13
  • Gianmarco Leone - Audio Director
  • slicer4ever's Journal
  • The Tribes Game Dev Journey
  • Like tears in the rain
  • Undead Castle Dev Journal
  • Welcome to Flying Cow Ink
  • Riphath's Journal
  • sgt_barnes' Journal
  • Voxel Game's
  • Xamusel's Gamedev Journal
  • Legends of Maelm
  • Crunch Magic
  • The Gameconomist
  • Kaptein's Journal
  • Morphex's Journal
  • Cafe Murder Dev Log
  • XNA 3D hexagon tile RPG testing
  • Modern Roguelike
  • Luis Krestos IOS
  • Gamieon's Journal
  • Koron
  • Sports Fiction ® New Sci-Fi Sports Game Project
  • cengizonkal's Journal
  • Minecraft/Survivalcraft Text Based Game
  • MrPhoenix's Dark Galaxy RPG
  • Vaerydian
  • j-jorge's Journal
  • Progress of 2D (?) Game
  • Orcus3D - The development of a modern game engine
  • Solo Game Developer Guy
  • Terrifying Secrets
  • Ground Up: A Journal Of An Engine
  • 1520:The Asylum
  • Electronic Meteor
  • Cthuga's Journal
  • ikam's Journal
  • Making a simple dungeon crawler
  • Digitopia's Journal
  • Ghostship Journal
  • Marc Mencher's Career Advice
  • Zombie Factory Dev Journal
  • Colony - Indiegame Dev Journal
  • Christian24's Journal
  • Joe's Games
  • MateiSoft's Journal
  • Tubocass' Journal
  • EWClay's Journal
  • And let there be light.
  • Starbase Citadel
  • arunDev's Journal
  • redw0lf's Journal
  • BGBTech: The Status Update
  • The Dawn Age - Development Journal
  • Fen's Journal
  • Jcam Engine 2 Development
  • More Than Cannons Announcement
  • chamomoe's Journal
  • Evolving as a programmer starting with Pong
  • scottrick49's Journal
  • Leadwerks Developer Blog
  • From idea to a game.
  • Game for kids
  • Azaral's Rants, Raves, and Lunatic Ideas
  • Krealit's Journal
  • Scarabus' Journal
  • Journey Into Functional Programming
  • The Beginner's Programmicon
  • Project Domini
  • fps games by mohammed 360
  • Infinity Elephant Development Journal
  • Making a Terrain Generator
  • Squared'D's Journal
  • Squire Studios: A Team of First-Timers!
  • AllEightUp's Journal
  • My attempt at making a platfo... no, a game
  • Spacetime Perpetuance
  • Multiplayer Project Journal
  • PokingWater's Journal
  • Creating A Game: My Journey
  • Konrad's Journal
  • Sam Jackson's World of Game Development
  • Miscellaneous Programming Notebook
  • Somewhere in space
  • Le Journal de Yahiko
  • TidBitCode
  • Nightmaare Shares
  • Dev notes from the Crypt!!!1eleven
  • Neometron's Journal
  • Snapey Code
  • Morikubo's Journal
  • Game A Week Self Challenge
  • DareDeveloper's Journal
  • Aura Games' Journal
  • Viadukt Dev-Journal
  • Arhim's Journal
  • DOT Space Hero's Journal
  • Building a browser game.
  • IcedCrow's Dev Journal
  • BigGiantHead's Journal
  • Richards Software Ramblings
  • Mikkel Staunsholm
  • The Wood under the Moon
  • Dialock's Journal
  • Meatsack's Workshop Journal
  • LouisMed's Journal
  • UncleVlad29's Journal
  • Hands On GameMaker:Studio
  • Project StickandCarrot
  • Casey Hardman's Journal
  • The SeaVax Journal
  • Howligan's Journal
  • Better Than Accounting
  • Death rays and scrapyards
  • Jsvcycling's Journal
  • Vilem Otte's Journal
  • Fight Club Games
  • TOT to Unity3D
  • LemCoop Development Journal
  • Dog Days Dev
  • The Journey of Taking Over Someone Else's Project
  • Gamedev info
  • Caveman
  • Project Z
  • A different way
  • Big Boss TV
  • Sunchasers development diary.
  • The Great Emoticon
  • Nothing Journal
  • Arkanong development blog
  • Building OllieBit
  • Kveitosphier -- Angelic Series (092113)
  • The Adventures of Mr. Fluffypants and Galaxy Lad
  • EraEngine
  • BallShooter Dev.
  • slayemin's Journal
  • Shane C's Journal
  • 2DFriends
  • PanPan's Journal
  • 2d Game Creation
  • #GameDevIsWayMoreFun
  • Grand Strategy: Space War
  • mabulous techblog
  • Mippy's Beehive
  • The development of Voxel
  • Return of Spy Ghost Raider
  • Wunderpong
  • Living and working in Russia
  • Dumont's Journal
  • reenigne's Journal
  • The coming Onslaught
  • Too dumb to make it, too dumb to quit.
  • The Development Blog of Neuton Mouse
  • Brass Watch Games Development
  • Sky Battles - Follow the evolution
  • Kornner Studios
  • The Dev Journal
  • N.I.B.'s Journal
  • jph's itreationGAMES development journal
  • csliva's Journal
  • Ilya Suzdalnitski's Journal
  • Project North Dev Journal.
  • Pete's Journal
  • A Youngster's Development Journal
  • [Theoretical] Games that evolve from player input
  • NerdSushi's Journal
  • Only if [Beta] - Surreal Puzzle Game
  • Never Miss: Dev Journal
  • My SDL Adventure
  • montify's Journal
  • Battle City
  • The Seven Tides
  • Latte Deconstruction - A classic 2D platform game deconstructible
  • SeaCraft! – game development journal
  • exOfde's Journal
  • Nyphoon's Thrilling Quest for Release and Everything In-Between
  • Tutorial Doctor's Journal
  • Path Tracing Adventures
  • ferrous' Journal
  • Alex's Journey Through Game Development
  • Exploring, learning and failing
  • arka80's Journal
  • J Fixby
  • GrinnTech's Notes
  • Spectra - First Game Creation
  • Fortification Hills Studios
  • QuickSilverCarpet's Journal
  • Flappy Assassin is now available
  • Animated Skinned Meshes
  • Undergroundies Projects
  • From End to Beginning
  • ShadowKind Games DevLog
  • Code Snippets
  • The Inner Circle
  • EveronWorlds Ew FPS Online
  • bradleycooper11's Journal
  • The Journeycat's Handbook
  • russelvedcse's Journal
  • MadRockGames
  • Sergioni's Journal
  • Pixel Perfect blog
  • MacAfeeje's Eludiant Time:Starlit
  • Smeagol's Journal
  • chel's Journal
  • Flared Development Journal
  • Malkavian Assembly's Journal
  • OLD Lactose!'s Journal
  • Alurik's Journal
  • Dreaming of adventure
  • Jsvcycling's Tower Defense DevBlog
  • Truerror's Journey Through Insanity
  • Jordan Bonser's Indie Dev Journal
  • afraidofdark's Journal
  • Journal Ov Azathotep
  • Fallen Shadows
  • GTRACE
  • deadstip's Journal
  • showtime
  • Edward's Journal
  • LOST ORBIT Development
  • Raven_rs Journal
  • PNGs and Things
  • Ding! Games
  • ZeroBeat's Journal
  • Coding with OpenGL
  • Joe Gilliver - Black Shuck Audio Journal
  • Giallanon's Journal
  • Project Root
  • delagames' Journal
  • Saint Retro's Journal
  • Arch1eN's GameDev Adventures
  • Return of the Dodo's
  • Riuthamus's Freelance
  • lalilulelost's Journal
  • newtechnology's Journal
  • normoyle1993's Journal
  • Kiritsu Games
  • LariGuilger's Journal
  • Creating Spacemasters
  • Hedeic's Journal
  • dustArtemis ECS Framework
  • IKazma: The Development & Experience
  • SelenaMiller's Journal
  • Project Anera
  • Daath Galaxy Devlog
  • Exploring Programming
  • Wombat Hole
  • GoCatGo's Development Journal
  • JumpSmash Legend a 3D Badminton Simulation Mobile Game
  • The Cuboid Zone
  • Avengers UTD Chronicles
  • Xylvan's Journal
  • Jean-François Fortin's Journal
  • Parallel Development Log
  • Gregory's Development Journal
  • SynchingFeeling's Journal
  • FinalXIIISora's Journal
  • The Big Procedural Game Journal
  • GiTS' Journal
  • Sporniket's log - Game programming while having a busy life
  • 2Play's Developer Journal
  • Garrett Hoofman's Journal
  • Island Troll Tribes
  • int main
  • cyberspace009's Journal
  • Impossibru is nothing!
  • NineheadGenesha's Journal
  • Inside a Wicked Lair
  • Final´s Game-Dev
  • Stett's Journal
  • Madolite's Journal
  • My Game"The Alien On The Planet"
  • How to make a clone of Futile Tiles
  • A Dreamer's Notebook
  • AfricanThunder's Journal
  • Arikin's Journal
  • Sinvas_K's Journal
  • Procedural Worlds
  • Binary Cats
  • Burnt Dragon's Journal
  • Washu's Journal
  • imoogiBG's Journal
  • Eck's Journal - Still Flying
  • Thaumaturge's Journal
  • ryan20fun's Journal of Rasterisation
  • Xaer0's Journal
  • The Week of Awesome II
  • The week of awesome II - shadowisadog
  • 0sok's Journal
  • Making of: Acclimate Engine
  • Misantes' Journal
  • The Week of Awesome II Herd of Nerd Star Participation
  • New Syntax blog for Week-of-Awesome-II
  • Captain Coffee's Journal
  • WoA II Journal
  • Jack & Francis's Week Of Awesome II
  • Erik Rufelt's Journal
  • Week of Awesome II
  • Xai's Awesome Living Toys
  • Week of Awesome II dev journal
  • WoA - My first gamejam
  • The Last Toy in the Toy Box
  • Extremely Usefull Bits
  • GeoffreyS' Journal
  • Jurassic Park Aftermath
  • Project PX
  • H.A.C.K. - Development Journal
  • ajm113's Journal
  • LV-341B
  • Archmage Rises
  • Stormynature's Miscellanea
  • Hierarchical subdivision
  • Radiant Engine Development
  • "Barricade"
  • New New Things
  • Librexus
  • mtlk's Journal
  • EmpiresInRuins' TD Journal
  • Collectible Card Game + Commercial Sim = Awesome
  • Legend of Grimrock 2 Review
  • Dr.John's Journal
  • Gorogorosama vs GameDev
  • Ironbane Devlog #1
  • Game News
  • PowerShell Games
  • ODMO - puzzle game - android release
  • Gaiiden's Journal^2
  • Gaiiden's Journal
  • Gaiiden's Journal
  • Debugging Diaries
  • General Thoughts
  • Captain's Log
  • Orangepixel's Journal
  • LAURENT*'s Journal
  • the game
  • fakhirs's Journal
  • A sound guy making a game.
  • Sisofys' Journal
  • Browser Scent
  • AuroraRL
  • Manager of Hell
  • Tales from the Engine's Core
  • Nemo Persona
  • victoriaadams02's Journal
  • Rico's Development Log
  • Funky Monkey Studios Dev Blog (French)
  • Fear the Light: The Path to Playable
  • Astari
  • mousetails RPG
  • Developing a JRPG
  • goldmoelly's Journal
  • Goblin War
  • Phaetonium's Journal
  • Flame
  • Reactor Engine
  • Boardspace.net Game AI Journal
  • TheComet's Journal
  • Negazina and his shenanigans
  • Realm Crawler Development Journal
  • Becoming an indie
  • The Wizards Blog
  • SIMSpace 8.0
  • Educating an artist
  • Michael Staud's Journal
  • YanimStudio's Journal
  • Adventures into Unreal Engine & indie dev
  • GamzTV
  • Blacksea Odyssey Devlog
  • The Furious Ape Journal
  • Feras' Journal
  • SnailLife
  • Ray Tracing Devlog
  • hgoel0974's Journal
  • GameGeezer's Journal
  • Pavloid game
  • cozzie's Journal
  • Han''s Quest Journal
  • Lost Repo
  • DevBlog: Wolves at the Door
  • victorx's Journal
  • TheChubu's Journal
  • Mobile Game Dev Journal
  • Protheus Engine
  • ducanhtuvu's Journal
  • YGGDRASIL STUDIO's Journal
  • Skinned Mesh/Skeletal Animation Editor in D3D11
  • Proceedings of TheUnimake
  • Inko makes Prototypes
  • Caldera Games' Journal
  • Machine Made
  • YAAG
  • Xam'n'Eggs
  • Developer Journal
  • Game Tale
  • Jygle's Journal
  • Sol-Ark's developer journal
  • Blender - skinned meshes and animation DirectX export
  • Night Lone Engine: Journal and progress
  • Vortex Game Studios
  • williamssara005's Journal
  • Onigiri Flash's Journal
  • The Week of Awesome III
  • Simmie's Journal
  • The Dark Prognosticus
  • Game explorations
  • Danmaku no Kyojin
  • Epicelitedude's Journal
  • Thinking about treasure lately
  • IYP's Graphics Journal
  • My Stuff
  • Trades with Spirals Development
  • WoA 3 (2015)
  • Seven Spells Of Destruction Development Journal
  • Battleships Development
  • An arcade console developer's Journal
  • Spidi, Magic Item Tech Journal
  • Galactic Adventures
  • Week of Awsome III journal
  • TeamTeamEric's Journal
  • From The Forth Dev journal
  • Speed's Progress
  • Gooey's Journal
  • Week of Awesome III
  • ArThor's Journal
  • hu3 team - WoA III
  • Inside the blizzard
  • JamCats' Week Of Awesome III
  • Our Week of Awesome Project
  • Lich Dev Log
  • Single-Handed Game Dev
  • GTEntertainment's Journal
  • Soulwielder Dev Journal (Week of Awesome III)
  • MarioLuigiMan's Journal
  • WoA3 - Still Flying
  • Calinabris' Journal
  • DKoding's Journal - Koding Nights
  • alexokita's Journal
  • TBFC's Week Of Awesome III Dev Journal
  • My First Game !!
  • Dusters Devblog
  • Bigdog57's Journal
  • El Tomba - Developer Diary
  • Starshard Dev Journal
  • alexmasen's Journal
  • bobbentz's Journal
  • Merc Tactics
  • WatsonTBK's Journal
  • Spiral Lords: Armada
  • Arms of Telos
  • Really Slick Blog
  • c++ SFML TEAL
  • A random Game
  • Creation of Zergification tech demo
  • Opiniocracy
  • Kill All Demons!
  • Moon Pub Games
  • KruSuPhy's Journal
  • KruSuPhy's Journal
  • Final Year
  • Monster Chronicles: Mobile Strategy RPG
  • Shinylane's OpenGL Journal
  • psychedelia smith's Journal
  • Conkoon's Journal
  • GE2015's Journal
  • We the Innovation
  • Engine development for fun and bachelors thesis
  • Farom Studio
  • Geometer's Apprentice
  • NavWorkshop
  • an unnamed youtube simulator
  • Eck's Star Citizen Efforts
  • Project Gift
  • opmania35's Journal
  • Westorm's Journal
  • What I did
  • Short rules for beginners in game dev
  • DEV - War of Kingdoms Pocket
  • MoonKiteTree's Journal
  • Tinus Tate's Journal
  • Fowl Flying
  • Memorial Trees: forget-me-not Journal
  • Fidelum Games
  • Hexmind's Journal
  • MVG Interactive
  • EXODUS - A New Age Dawns
  • OmnicidalStudios Akintoo Journal
  • Kingpin
  • iMini Development
  • Oblivion Wars Development Journal
  • devlion's Journal
  • 2D Platformer
  • Cleemo's Journal
  • Becoming the Lord of Dwarves
  • Rogue555's Journal
  • Not Yet Implemented
  • Prali Games
  • Multiplayer RPG dev diary
  • Venatus
  • AVaW2015's Journal
  • Faison92's Journal
  • ProcGen Journal
  • Sector0's Journal
  • P2p online's Journal
  • One Piece Ultimate War
  • Syrena's Journal
  • w32's Journal
  • Max-Green's Journal
  • [GBA] Kingdom of Twilight a retro rom
  • Gamescrye's Game Design Blog
  • GameDev.net Partners
  • Blend4Web Development Journal
  • STAR SHIFT
  • Sweat, tears and blood
  • Amanda/adamSnowflake's Journal
  • Unity Parkour Game
  • Lawnjelly's Journal
  • ProcFxGen's Journal
  • dpadam450's Journal
  • Sungazer Software Development Log
  • A New Developer's Journey
  • De Feet - a 3D interactive story RPG
  • V0xel Sp4ce Development
  • yoshi_t's Journal
  • Strategy Empire's Journal
  • VikingVRStudio's Journal
  • Towards The Pantheon Devlogs
  • GameArch
  • SilviuShaders' WoA Dev Journal
  • Frango Digital Log - The Week of Awesome IV
  • AlienCore's Journal
  • Mousetails WoA 5 journal
  • Mind of Khan
  • XycsoscyX's Journal
  • The Week of Awesome IV
  • WOA 2016 | Team Bytetroll
  • EarthBanana's Journal
  • GameDev.net Staff Blog
  • Unnamed Turn-Based Strategy
  • "Popular" progress.
  • 3D, AI, procedural generation and black jack
  • Avalander's Journal
  • Andrey Macritskiy
  • Drone Combat Devlog
  • Rog Games' Journal
  • The Xoid Isometric Survival... from the start
  • Journal of Gruffler
  • Project Tidalwave
  • Ultra Kai's Graphics Journal
  • MY FIRST INDIE GAME! :D
  • DoomedGaming
  • V-Play Cross-Platform Game Engine
  • Bacterius' WoA Feedback
  • Project Mistwrapped
  • Game Development Adventures
  • The Achilles Journal
  • The Cptn's first voyage
  • A short Journey over Zeno's Bridge
  • MagForceSeven's Journal
  • TheCaptainSly's Journal
  • School and Mazes
  • Development of My Own Civilization
  • Richie2Pixel's Journal
  • khaniiuc's Journal
  • saadtaame's Journal
  • First Complete Game
  • Turn-based strategy about agriculture
  • Systemic Games
  • anyone needs a 3d modeller?
  • Vidar DevBlog
  • Vertexwahn's Journal
  • Opportunities in AR/VR
  • AngleWyrm Studios
  • "Project SpeceVille" Developer Journal
  • Floatlands devblog
  • Game Creation Journal: Midievalry
  • Arceneaux's Log
  • ViciousGaming's Journal
  • ACE Team's Journal
  • yps_sps' Journal
  • Alchemist
  • Project Life
  • GrindQuest
  • Paninairo's Journal
  • JacPete's Super Mage World
  • Resilients Journey
  • Who is Who? Dev blog
  • Multiverse: Cosmic Conquest TCG Development Journal
  • Aggroblakh's Journal
  • Fight the ADHD
  • The Time Rider Community Journal
  • Too few shopkeeper games!
  • VFX Highlights & Games
  • lougv22's Journal
  • First Impact: Rise of a Hero's Journal
  • Labraid's Journal
  • BattleForte Game DevLog
  • WinterDragon Says Print("hello")
  • Ascension Game Journal
  • bogosaur's great journal of wisdom.
  • AurumDust journal
  • Progress on The Last Score
  • BrykuTheDev's Journal
  • Developing a good looking story to make it a game
  • Rebirth of a classic card game
  • Ships vs Sea Monsters. From sketches to final edition
  • SquaserZ - The Devlog
  • Dev Quest With AriiMoose
  • ohoyy056's Journal
  • TheLastKind's Journal
  • ohoyy070's Journal
  • essaywriting
  • Idea To A Game
  • XyraniaDev's journal
  • ohoyy082's Journal
  • Pirate Dawn Universe
  • Deep Waters Devblog
  • brigittepetrie's Journal
  • GoldbarGames' Journal
  • Kickstarter/Greenlight Dev Journals/Tips/Insights
  • Delphinity
  • Big List of Mobile Game Reviews [UPDATED DAILY]
  • 0day's Blog
  • DuelingDevblogs
  • Jaden's Blog
  • Tee_Hunter
  • GDC 2017
  • Voxelaxy
  • Power Pong Devblog
  • Spinbot's Blog
  • SerikASA's Blog
  • Brewing the tee
  • Johnnymorgan's Blog
  • Blog #1 - You can't push a rope!
  • Korvas' Game Dev
  • Tough Story Volume I - Big Hell
  • VirtualRN's Blog
  • Game Blog
  • Dadou666's Blog
  • SHIRO Developers Log
  • Star Heritage
  • Bluword
  • Appodeal Blog
  • juegostudios
  • saraedward's Blog
  • shirawinget's Blog
  • Baro's Beginning
  • phil67rpg's Blog
  • Video Game Sound by Olivier Girardot
  • Deep Worked Blog
  • Swim Out
  • Bypassed - DevBlog
  • Muisca's Blog
  • AlexHoratio's Blog
  • Hell Warders
  • hydra1's Krypton Development Team
  • tommorow's Blog
  • ¿How to do Game?
  • My 1st GDC: Recap
  • Beyonce's Blog
  • donislawdev's Blog
  • Creating Complexity
  • dovodi's Blog
  • Stitched Showcase
  • itSeez3D Avatar SDK
  • 40Ggames' Blog
  • GamerX1221's Blog
  • HunterGaming
  • Nicolas Bertoa's Blog
  • Masters VR
  • PiN
  • Ben's Appallingly Humble Blog
  • Starfall Tactics
  • Ermergerd Ent's Blog
  • Secure Vend LLC's Blog
  • Cascapadia
  • Last Regiment Dev Blog
  • sarwar's Blog
  • Spaceguard 80
  • appguruz's Blog
  • ios\Android games promotions!
  • Forgiveness devblog
  • The creative industries digital game.
  • xboxoneya's Blog
  • Untitled: My journey with LibGDX and bullet hell
  • Block Builder Update Blog
  • noisechip's Blog
  • Call of Avatar
  • behc's Blog
  • Terrible Mess Games
  • polyfrag's Blog
  • polyfrag's Blog
  • Dr. Lexus Blog
  • Jungle Tag by The Kid Can Drive
  • polyfrag's Blog
  • Wormhole Devlog
  • Age of Dark
  • Trym Studios' Concept Blog
  • PSG's Blog
  • sinopgames
  • Space Warfare Blog
  • EdenAeternum's Blog
  • APPTUTTi's Blog
  • SlammaJammaMovie's Blog
  • Village Monsters Dev Diary
  • Rox087's Blog
  • THEDARKMEME's Blog
  • Progorion's Blog
  • lexnewgate's Blog
  • Starminer7Z7 of Fullpower's Blog
  • Progorion's Blog
  • DualTD
  • OandO's Blog
  • From UltDip to ...
  • io games
  • .io Games
  • JohnTheRipper88's Insight and Ramblings
  • Moosehunt
  • VBexEngine
  • Games Development Notes
  • Eart - a similar to an rpg but with typical elements of a bullet hell games
  • Valley of Crescent Mountain
  • Charly Men's BIZARRE
  • 울산오피 ○1○《⑻⑼⑷⑺)⑥⑥④⑧ 세계일등클래스
  • 청담안마 OlO⇔2816⇔2526 〃최저가 청담안마방 청담역안마 청담안마시술소 청담안마추천 청담역안마가격 청담안마위치 청담동안마방 청담동안마추천 청담안마예약
  • 인천출장샵
  • ⅸ강원도출장샵 阝카톡gg882출장콜걸.홈피 kiss45.COM출장안마/ 출장마사지/출장샵/출장업소/콜걸연락처/섹파/콜걸아가씨카톡/업소연락처.
  • Michael Zhou
  • が대구출장샵阝카톡gg882출장콜걸.홈피 kiss45.COM출장안마/ 출장마사지/출장샵/출장업소/콜걸연락처/섹파/콜걸아가씨카톡/업소연락처.
  • Battle of Millenia Update #1
  • ⅸ아산출장샵 阝카톡gg882출장콜걸.홈피 kiss45.COM출장안마/ 출장마사지/출장샵/출장업소/콜걸연락처/섹파/콜걸아가씨카톡/업소연락처.
  • A Passive Gamer's Blog
  • Newbie Gamer
  • Android, the most popular mobile platform throughout the world these days
  • Aggressive Gaming
  • 경마사이트추천 ⟡->『 AA77.ME 』<-⟡인터넷경마사이트
  • The Yii Development Framework for fast, extremely professional performance
  • Psychology in game design
  • Check out my Game!
  • Hell Warders Development blog
  • Wildlife control service
  • EP (A Platform Game)
  • Outentiq
  • See Gee Eye
  • Jenny's Magical Adventure
  • Last Hills Teaser Trailer (Horror Game) - Red Projekt -
  • Want to help make a game
  • New Game - ArcAngel is released.
  • Corona Labs Blog
  • Java&Python game development
  • How to write outstanding game reviews
  • Exactly how Does the Euromillions Millionaire Raffle Work?
  • puppysss
  • World Game Info
  • Rick Henderson And The Artifact Of Gods
  • Mobile Application Development Today
  • Runica: The Ancient Dungeon
  • Benefits of Mobile Application Development
  • Enterprise App Development you need to know
  • Mobile Application Development
  • krkrgames
  • My First Success - Dev Blog
  • Alchemica
  • Elemento : Development Blog
  • Remote Jobseekers
  • Bird With Toes Development Log
  • Forward Creating
  • ギ일산출장마사지 << ㅇIㅇ / ②8ㅇ④ / ③⑧⑧⑤ >>キ빠끈신속 정확선입금 NO24시간 일산출장마사지
  • ゴ여천동출장마사지 ☎ 0①ⓞ.2⑧O④.③885 コ입니다.출장 콜걸뜨거운핫한 여천동출장마사지
  • ズ매곡동출장마사지 << ㅇ①ㅇ / ②⑧ⓞ④ / 3885 >>ス시원빠끈 신속후불선입금 NO 매곡동출장마사지
  • セ진천동출장마사지 < 0!0=2⑦1⑥=!8②⑧ >ズ빠끈신속 정확선입금 NO24시간 진천동출장마사지
  • Drunken Monday, developers of Slash Arena: Online
  • pythoblack
  • Game Developer
  • Levels of Lean Six Sigma Certification
  • Josh Grams - WoA V
  • POSTWORLD Development Diaries
  • Week of Awesome V
  • Journal of development
  • WOA - 5
  • Week of Awesome V - Dev Blog
  • WoA ProjectCastle
  • Ludologists
  • bestpharmacy
  • Micro Brood Games Devlog
  • Bouncy Bob Crunch Journal
  • golds
  • Mobile App Development Company
  • Why Brands Are Missing Out On Mobile Games
  • RPG Grind!
  • Kade Markoux
  • Project XSYS - WIP
  • Higame
  • Chromasia
  • BITSZER SOFTWARE/EARN BITCOINS
  • This is for my rpg game i am working on
  • ggd
  • Kavarna's blog
  • Mobile App And Game Development Blog
  • opensource & javascript game development
  • Fooliery: Build with tiles
  • Super Reaction Speed Arcade Game
  • Mobile Application & Game Development Blog
  • How To Choose The Right Learning App For Your Preschooler?
  • Project Industry[Unity Indie Game]
  • hello World
  • From Zero To VR
  • Mobile Game App Blog
  • A cute casual game
  • Game Design
  • Project Idra
  • Kung Fu Runner
  • PistacheGames
  • Dream Build Play - Resources
  • Modern game narratives - Writing better, stronger, more intriguing game stories.
  • onqtam
  • How to turn off Windows, Mac computers remotely using smartphone?
  • Game Testing and a Cup of Coffee
  • Mobile App Technologies, Unity3D Game Development Blog
  • Android Application Development and Growing Importance of Android Developers
  • disini
  • PandemicZ
  • Picswars.io devlog
  • First Blog
  • New Free Sound For You Guys
  • Cool Designing Tips They Don’t Teach You in Classes #1
  • Blog by Mobile App Development Company
  • 7 Things Every Mobile Team Needs to now
  • 선릉역안마 ゥェ1ゥェ。ィ.2816_〃2526 윤실장 ω환상의코스ω24Open #선릉역안마윤실장 선릉역안마연예인급사이즈 선릉역안마아가씨 #선릉역안마실장 선릉역안마정보 선릉역안마안내
  • Exploring Level Design
  • Mobile App & Game Development
  • Beneath the Waves
  • Mobile App and Game Programming Blog
  • Take my heart to this game
  • Mobile App, Web & Game Design News
  • BEST MEDICAMENT ONLINE
  • Embedded Training in Chennai
  • Free SOFTWARE PURE APK
  • South America Tours - Anubhav
  • Why BrainMobi is ranked among the best Android App Development Companies?
  • Origin Dehumidifier
  • lioryan
  • The Gragons Farm
  • Simple game for Pixabay's developer challenge
  • Oracle course in Chennai
  • Game Android
  • It's Bouncy
  • Homebrew Gamedevelopement Experiment
  • Gift of Parthax - An Ablaze Interactive game
  • White Harvest.
  • The Balcony
  • ScrewDriver
  • Major Factors need to consider in Wearable Development
  • Indienamic
  • Something Ate My Alien
  • Medical VR
  • Hadoop Training in Chennai
  • SAS Analytics
  • Software
  • Salesforce
  • Porting the mobile game to Gameroom (FaceBook)
  • Veteran Game Localization, Voiceover & Publishing
  • How to Develop Mobile Apps which are Engaging and also Improve the Revenue Stream?

Group


About Me


Website


Industry Role


Twitter


Github


Twitch


Steam

Found 17401 results

  1. I want to make professional java 3d game with server program and database,packet handling for multiplayer and client-server communicating,maps rendering,models,and stuffs Which aspect of java can I learn and where can I learn java Lwjgl OpenGL rendering Like minecraft and world of tanks
  2. A friend of mine and I are making a 2D game engine as a learning experience and to hopefully build upon the experience in the long run. -What I'm using: C++;. Since im learning this language while in college and its one of the popular language to make games with why not. Visual Studios; Im using a windows so yea. SDL or GLFW; was thinking about SDL since i do some research on it where it is catching my interest but i hear SDL is a huge package compared to GLFW, so i may do GLFW to start with as learning since i may get overwhelmed with SDL. -Questions Knowing what we want in the engine what should our main focus be in terms of learning. File managements, with headers, functions ect. How can i properly manage files with out confusing myself and my friend when sharing code. Alternative to Visual studios: My friend has a mac and cant properly use Vis studios, is there another alternative to it?
  3. Before using void glBindImageTexture( GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format), does need to make sure that texture is completeness.
  4. I've had a Google around for this but haven't yet found some solid advice. There is a lot of "it depends", but I'm not sure on what. My question is what's a good rule of thumb to follow when it comes to creating/using VBOs & VAOs? As in, when should I use multiple or when should I not? My understanding so far is that if I need a new VBO, then I need a new VAO. So when it comes to rendering multiple objects I can either: * make lots of VAO/VBO pairs and flip through them to render different objects, or * make one big VBO and jump around its memory to render different objects. I also understand that if I need to render objects with different vertex attributes, then a new VAO is necessary in this case. If that "it depends" really is quite variable, what's best for a beginner with OpenGL, assuming that better approaches can be learnt later with better understanding?
  5. Both functions are available since 3.0, and I'm currently using `glMapBuffer()`, which works fine. But, I was wondering if anyone has experienced advantage in using `glMapBufferRange()`, which allows to specify the range of the mapped buffer. Could this be only a safety measure or does it improve performance? Note: I'm not asking about glBufferSubData()/glBufferData. Those two are irrelevant in this case.
  6. hi guys, are there any books, link online or any other resources that discusses on how to build special effects such as magic, lightning, etc. in OpenGL? i mean, yeah most of them are using particles but im looking for resources specifically on how to manipulate the particles to look like an effect that can be use for games,. i did fire particle before, and I want to learn how to do the other 'magic' as well. Like are there one book or link(cant find in google) that atleast featured how to make different particle effects in OpenGL (or DirectX)? If there is no one stop shop for it, maybe ill just look for some tips on how to make a particle engine that is flexible enough to enable me to design different effects/magic let me know if you guys have recommendations. Thank you in advance!
  7. How do we rotate the camera around x axis 360 degrees, without having the strange effect as in my video below? Mine behaves exactly the same way spherical coordinates would, I'm using euler angles. Tried googling, but couldn't find a proper answer, guessing I don't know what exactly to google for, googled 'rotate 360 around x axis', got no proper answers. References: Code: https://pastebin.com/Hcshj3FQ The video shows the difference between blender and my rotation:
  8. Hello all, On my Windows 7 x64 machine I wrote the code below on VS 2017 and ran it. #include <glad/glad.h> #include <GLFW/glfw3.h> #include <std_lib_facilities_4.h> using namespace std; void framebuffer_size_callback(GLFWwindow* window , int width, int height) { glViewport(0, 0, width, height); } //****************************** void processInput(GLFWwindow* window) { if (glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS) glfwSetWindowShouldClose(window, true); } //********************************* int main() { glfwInit(); glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3); glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3); glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); //glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE); GLFWwindow* window = glfwCreateWindow(800, 600, "LearnOpenGL", nullptr, nullptr); if (window == nullptr) { cout << "Failed to create GLFW window" << endl; glfwTerminate(); return -1; } glfwMakeContextCurrent(window); if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress)) { cout << "Failed to initialize GLAD" << endl; return -1; } glViewport(0, 0, 600, 480); glfwSetFramebufferSizeCallback(window, framebuffer_size_callback); glClearColor(0.2f, 0.3f, 0.3f, 1.0f); glClear(GL_COLOR_BUFFER_BIT); while (!glfwWindowShouldClose(window)) { processInput(window); glfwSwapBuffers(window); glfwPollEvents(); } glfwTerminate(); return 0; } The result should be a fixed dark green-blueish color as the end of here. But the color of my window turns from black to green-blueish repeatedly in high speed! I thought it might be a problem with my Graphics card driver but I've updated it and it's: NVIDIA GeForce GTX 750 Ti. What is the problem and how to solve it please?
  9. I making my coding my own os\game console from scratch and I would like to access the gpu to draw gfx? how would I do it using c\c++\asm?
  10. Hello all, I've got two good resources for starting OpenGL both using the C++ language: https://learnopengl.com/ and OpenGL Programming Guide 9th Edition The former starts teaching by OpenGL ver 3.3 and the latter by 4.5 while both call themselves teaching "modern OpenGL"!! At the time being I'm reading both. But I wanted to ask you that while there is distance between 3.3 and 4.5 first which one is correct to be called modern? And which one is better for starting as a beginner? Thanks.
  11. Hi there, In my engine, the window in z-space to be culled by GL is very thin. Sprites have to be set at 1-5 units from the camera for not be culled, closer or farther than that won't be rendered. Camera is orthographic with 0.1 near plane and 100 far. Please, give me some hint of what's going on. Thanks in advance.
  12. I have this code below. Notice at the bottom the last line is the warp pointer function. This moves the mouse where you want it. The function as a whole moves a fps camera around like in a fps game. The only thing is that when i reach the edge of my screen and the mouse moves out of the program, it stops rotating around. I tried to center the cursor to the screen with warppointer but then it stays stuck when you try to rotate the view around. I kinda see why...but I was wondering if there was some code someone could give to solve my problem or modify this to work. bool firstMouse = true; GLfloat yaw = -90.0f; GLfloat pitch = 0.0f; GLfloat lastx = 800.0f / 2.0f; GLfloat lasty = 600.0f / 2.0f; ... void MyGLCanvas::onMouseMove(wxMouseEvent& event) { if (firstMouse) { lastx = event.GetX(); lasty = event.GetY(); firstMouse = false; } GLfloat offsetx = event.GetX() - lastx; GLfloat offsety = lasty - event.GetY(); lastx = event.GetX(); lasty = event.GetY(); GLfloat sens = 0.1f; offsetx *= sens; offsety *= sens; yaw += offsetx; pitch += offsety; if (pitch > 89.0f) pitch = 89.0f; if (pitch < -89.0f) pitch = -89.0f; glm::vec3 front; front.x = cos(glm::radians(yaw)) * cos(glm::radians(pitch)); front.y = sin(glm::radians(pitch)); front.z = sin(glm::radians(yaw)) * cos(glm::radians(pitch)); aCam->cameraAt = glm::normalize(front); parentFrame->WarpPointer(lastx, lasty); }
  13. Hey guys, I need your help again if somebody here would kindly help me out. I recently loaded my very first terrain using a heightmap image for the first time. It worked great! However, I noticed some strange line segments that are being drawn from the top of the terrain stretching all the way down to the very bottom. I will post images of this below so you could see what I mean, I will also link you the resource I used to generate my terrain (which is really just 1 YouTube video) here: https://www.youtube.com/watch?v=pAHzHcUXsYA I'd be very thankful if somebody could review the code with me and help me identify the problem... Oddly enough, the person in the YouTube video seemed to have had a very similar (if not the exact same) problem I am having at 18:38 but he fixed it by adding one simple thing which I also added but didn't do the trick for me Also he is using the fixed function pipeline to demonstrate the technique, I am using the programmable pipeline for better performance. Anyway, here is the result of my terrain: The unwanted line segments: As you can see, I also have grass (very awful looking grass too :p) on top of my terrain while playing around with the geometry shader the other day. Here is how I am loading the heightmap, and here is where I believe the problem lies: void TerrainLoader::LoadHeightmapImage(const char* file) { // Load the bitmap m_pImage = SDL_LoadBMP(file); Uint32 Pixel = 0; // Check for errors if (m_pImage == nullptr) { std::cerr << "error: Heightmap image could not be loaded.\n"; return; } // Get bitmap's width and height m_HeightmapHeight = m_pImage->h; m_HeightmapWidth = m_pImage->w; // Read the bitmap (stores in this 2D STL vector of floats: vector<vector<float> > m_vHeights;) std::vector<float> tmp; for (int i = 0; i < m_HeightmapHeight; ++i) { for (int j = 0; j < m_HeightmapWidth; ++j) { Pixel = ((Uint32*)m_pImage->pixels)[i * m_pImage->pitch / 4 + j]; unsigned char r, g, b; SDL_GetRGB(Pixel, m_pImage->format, &r, &g, &b); tmp.push_back((float)r / 255.0); } m_vHeights.push_back(tmp); tmp.clear(); } SDL_FreeSurface(m_pImage); float h = 0.4f, terrainSize = 0.005f; std::vector<glm::vec3> Vertices; std::vector<glm::vec2> Textures; for (int i = 0; i < m_vHeights.size() - 1; ++i) { for (int j = 0; j < m_vHeights.size() - 1; ++j) { // Put the vertices and texture coordinates in their respective buffers Textures.push_back(glm::vec2(0.0f, 0.0f)); Vertices.push_back(glm::vec3(i * terrainSize, m_vHeights[i][j] * h, j * terrainSize)); Textures.push_back(glm::vec2(1.0f, 0.0f)); Vertices.push_back(glm::vec3((i + 1) * terrainSize, m_vHeights[i + 1][j] * h, j * terrainSize)); Textures.push_back(glm::vec2(1.0f, 1.0f)); Vertices.push_back(glm::vec3(i * terrainSize, m_vHeights[i][j + 1] * h, (j + 1) * terrainSize)); Textures.push_back(glm::vec2(0.0f, 1.0f)); Vertices.push_back(glm::vec3((i + 1) * terrainSize, m_vHeights[i + 1][j + 1] * h, (j + 1) * terrainSize)); } } // Send the data to the GPU glGenVertexArrays(1, &m_VAO); glBindVertexArray(m_VAO); glGenBuffers(1, &m_VBO[0]); glBindBuffer(GL_ARRAY_BUFFER, m_VBO[0]); glBufferData(GL_ARRAY_BUFFER, Vertices.size() * sizeof(glm::vec3), &Vertices[0], GL_STATIC_DRAW); glEnableVertexAttribArray(0); glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, (void*)0); glGenBuffers(1, &m_VBO[1]); glBindBuffer(GL_ARRAY_BUFFER, m_VBO[1]); glBufferData(GL_ARRAY_BUFFER, Textures.size() * sizeof(glm::vec2), &Textures[0], GL_STATIC_DRAW); glEnableVertexAttribArray(1); glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, 0, (GLvoid*)0); glBindBuffer(GL_ARRAY_BUFFER, 0); glBindVertexArray(0); // This concludes the function } Then, this is how I'm simply drawing the terrain to the scene: void TerrainLoader::Draw() { glBindVertexArray(m_VAO); glDrawArrays(GL_TRIANGLE_STRIP, 0, (m_HeightmapWidth - 1) * (m_HeightmapHeight - 1) * 4); } Alright, I hope that's enough information for someone to help me figure out the issue with this... Thank you very much for taking the time to read my thread, I really appreciate it! Enjoy your day!
  14. Hello all, I set up Visual Studio 2017 for OpenGL and ran this and this codes successfully. I get these linker errors when compiling the following code: #include <iostream> using namespace std; #include "vgl.h" #include "LoadShaders.h" enum VAO_IDs { Triangles, NumVAOs }; enum Buffer_IDs { ArrayBuffer, NumBuffers }; enum Attrib_IDs { vPosition = 0 }; GLuint VAOs[NumVAOs]; GLuint Buffers[NumBuffers]; const GLuint NumVertices = 6; //-------------------------------------------------------------------- // // init // void init(void) { static const GLfloat vertices[NumVertices][2] = { { -0.90, -0.90 }, // Triangle 1 { 0.85, -0.90 }, { -0.90, 0.85 }, { 0.90, -0.85 }, // Triangle 2 { 0.90, 0.90 }, { -0.85, 0.90 } }; glCreateBuffers(NumBuffers, Buffers); glNamedBufferStorage(Buffers[ArrayBuffer], sizeof(vertices), vertices, 0); ShaderInfo shaders[] = { { GL_VERTEX_SHADER, "triangles.vert" }, { GL_FRAGMENT_SHADER, "triangles.frag" }, { GL_NONE, NULL } }; GLuint program = LoadShaders(shaders); glUseProgram(program); glGenVertexArrays(NumVAOs, VAOs); glBindVertexArray(VAOs[Triangles]); glBindBuffer(GL_ARRAY_BUFFER, Buffers[ArrayBuffer]); glVertexAttribPointer(vPosition, 2, GL_FLOAT, GL_FALSE, 0, BUFFER_OFFSET(0)); glEnableVertexAttribArray(vPosition); } //-------------------------------------------------------------------- // // display // void display(void) { static const float black[] = { 0.0f, 0.0f, 0.0f, 0.0f }; glClearBufferfv(GL_COLOR, 0, black); glBindVertexArray(VAOs[Triangles]); glDrawArrays(GL_TRIANGLES, 0, NumVertices); } //-------------------------------------------------------------------- // // main // int main(int argc, char** argv) { glfwInit(); GLFWwindow* window = glfwCreateWindow(640, 480, "Triangles", NULL, NULL); glfwMakeContextCurrent(window); gl3wInit(); init(); while (!glfwWindowShouldClose(window)) { display(); glfwSwapBuffers(window); glfwPollEvents(); } glfwDestroyWindow(window); glfwTerminate(); } Is there any way to solve this issue?
  15. This question isn't as much about how to do stuff as it is about how to find existing tutorials on doing this stuff. I just can't seem to find the right search terms. I want to understand and do stuff like this: https://www.shadertoy.com/view/4ldGz4 Or this: https://www.shadertoy.com/view/4lsczM Is there a name for that? What techniques will I need? I understand that a fragment shader takes pixel coordinates and returns the color of that pixel. Basically, if I need to draw a 3D scene, I need to implement a basic 3D engine and a rasterizer - all in the fragment shader?
  16. Plz forgive me about my poor english. I'm new to OpenGL dev and this forums. I followed the OpenGL tutorial from learnopengl, after finished the camera and model loading part, I wonder if I can do more about camera. I try to code a camera behavior that fix the view to a model, be more clear, like some games that you can fix the view to the enemy object, and while you walk around the view of camera still stick to the enemy object. ( plz forgive my poor english ) I don't know the proper way to do that. My first thought is that If I need to bind camera view to an object, I need to know the location in the world coordinate of that object, then I can move the camera to see it. I tried using raycasting picking to pick the object I loaded, but it is just that, I don't know what to do next. Could you guys tell me the way to do so? Some links of similar staff are great as well. Thanks.
  17. Hello i recently started to tackle the various mesh decimation & simplification algorithms, mostly from Hoppe & Melax. The algorithms in question are the Quadric error metrics mesh simplification & the Progressive mesh simplification. I found a few good github starting points (VTK, hoppe's & melax's githubs etc.) to try and test the various implementations but i run into some problems:1. I tried to simplify a few of mine and a few of the provided (inside the code base) meshes and i noticed that not all meshes survive the same simplification. For example a 400 vertices robot mesh can be simplified down do 10-20 (or about 3-7% of the src vertices) vertices without any problem no missing faces or huge topology distortion, yet an Eagle mesh with 3000 vertices can be just simplified to 1900-2000 (or about ~60-70% of the src vertices) vertices before i start noticing that the mesh starts to lose faces (which leads to a mesh with quite noticeable number of holes). And that is something i noticed with quite a few models (be it mine or the provided). I would like to know what is the actual cause which stops / prohibits some meshes from being simplified as much as others. I am probably asking a quite stupid or obvious question 2. Even if the simplification was perfect i still have difficulty figuring out how would i preserve the vertex appearance (uv coord, tangents, normals etc.) I read a few papers - one in particular from Hoppe - New Quadric Metric for Simplifying Meshes with Appearance Attributes. But did not find any real world examples or at least snippets of code to give me a better grasp of the technique Furthermore what has been bugging me lately is more about techniques to dynamically render different LOD levels when walking over a large terrain mesh (non regular grid - NOT generated from a height map, noise, 2D data, etc. so clipmapping techniques and alike go to the bin). I will give you a CS:GO analogy or Take League of Legends as it seems a more appropriate example here, i am not sure if they are doing that exact thing, but presume that their maps are mostly hand crafted, all trees, boxes, walls buildings which are not interactive, destructible or static are probably embedded and modeled along with the rest of the map & terrain. This can potentially allow for fewer draw calls, and much richer environment. But then again how would one optimize such a huge rendering step, where the entire model of the map / terrain may consist of at least 400-500k triangles at bestOr is it just a flat plane, with everything else rendered as a separate entity on top (instancing where possible, although given that most objects are quite unique and not very many instancing will be limited) ?
  18. Hi again, thanks to the good advise from the guys on this thread https://www.gamedev.net/forums/topic/692174-opengl-2d-gui-system-question/?tab=comments#comment-5356606 thanks guys! I have my basic 2D GUI working now, buttons, windows/dialogs and sliders are working, now i want to port my scrollbox, listview controls to OpenGL, unfortunately i dont have an idea on how 'clipping' a rendered object works, in 2D canvas such as in 2D SDL or javascript canvas, what i did is for example on listview/listbox control, i draw all items in an offscreen canvas, and just Blit copy the visible area to screen based on the amount it was scrolled. Since i dont think OpenGL has the BlitBlk style of partial rendering a texture/canvas, how should i approach implementing a control such as listview control? Background, i want a 2D GUI control where there will be items inside (like a listview) that hides/clip when scrolled based on scroll value, any tips on how to do this on OpenGL?
  19. Hi can anyone give me hint how to write a shader for making an animation of a transparent sweep means a line moving about 180 degree on the screen the line.
  20. Hi! So, I really like Sublime, I like its design and its simplicity. My question is, is it a valid option to use Sublime for C++ OpenGL 2D game development?
  21. I'm working on a voxel engine using Libgdx and I've been reading that using vertex buffering will increase my performance dramatically. I understand it to be packaging up all of the renderables into one object and sending that to the GPU as opposed to making thousands of draw calls individually. This sound really convenient, but I can't seem to wrap my head around it. I've looked at the wiki but still don't really know how this would be implemented. Edit: From further reading, what I think I want to do is convert a list of modelInstances into a mesh? Is that correct? If so, how do I go about doing that?
  22. When I create a Texture Array using glTexImage3D() (instead of glTexStorage3D()), am I supposed to call it for every texture in the array, or call it just once? glGenTextures(1, textureID); glActiveTexture(GL_TEXTURE0); glBindTexture(GL_TEXTURE_2D_ARRAY, textureID); //Configure the details of this texture object. glTexParameteri(GL_TEXTURE_2D_ARRAY, GL_TEXTURE_BASE_LEVEL, 0); glTexParameteri(GL_TEXTURE_2D_ARRAY, GL_TEXTURE_MAX_LEVEL, (mipmapLevels - 1)); glTexParameteri(GL_TEXTURE_2D_ARRAY, GL_TEXTURE_WRAP_S, /* blah */); glTexParameteri(GL_TEXTURE_2D_ARRAY, GL_TEXTURE_WRAP_T, /* blah */); glTexParameteri(GL_TEXTURE_2D_ARRAY, GL_TEXTURE_WRAP_R, /* blah */); glTexParameteri(GL_TEXTURE_2D_ARRAY, GL_TEXTURE_MIN_FILTER, /* blah */); glTexParameteri(GL_TEXTURE_2D_ARRAY, GL_TEXTURE_MAG_FILTER, /* blah */); //Allocate every texture in the array. for(GLint arrayIndex = 0; arrayIndex < this->details.textureLayers; ++arrayIndex) { //Allocate the texture on the GPU, with uninitialized data. glTexImage3D(GL_TEXTURE_2D_ARRAY, 0 /* mipmapLevel */, format, width, height, arrayIndex, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL); }
  23. Author's note: Keep in mind that although this article is being published on GameDev.net in April 2003, it was written in April 2002, and some things have changed in the past year, notably the release of the OpenGL 1.4 specification, and the standardization of pixel and vertex shaders. I've chosen not to update the article to reflect these changes because I wanted to keep the text consistent with what was published in the book, and because they really make no difference as far as the the purpose of the article is concerned. This article originally appeared in the book Game Programming Tricks of the Trade, 2002, Premier Press. Many members of the GameDev.net community, including several GDNet staff members, contributed to the book, so you're encouraged to check it out. Trick #10 from Game Programming Tricks of the Trade, Premier Press Once you've been programming with OpenGL for Windows for a while, you'll probably notice something: the headers and libraries you're using are old. Dig around in the gl.h header, and you'll see this: #define GL_VERSION_1_1 1 his means that you're using OpenGL 1.1, which was released in 1996. In the world of graphics, that's ancient! If you've been paying attention, you know that the current OpenGL specification is at 1.3 (at least at the time of this writing). OpenGL 1.4 should be released later this year, with 2.0 following soon after. Obviously, you need to update your OpenGL headers and libraries to something more recent. As it turns out, the most recent headers and libraries for Windows correspond to ... OpenGL 1.1. That's right, the files you already have are the most recent ones available. This, of course, presents a problem. Although you can do some impressive things with OpenGL 1.1, to take full advantage of modern consumer graphics hardware, you're going to need functionality available through more recent versions, as well as features available through extensions (but we'll get to that in a bit). The question, then, is how to access newer features, when your headers and libraries are stuck at OpenGL 1.1. The purpose of this article is to answer that question. What You Will Learn In this article, I will: Explain in greater detail why you need to take some extra steps to use anything beyond OpenGL 1.1. Explain OpenGL's extension mechanism, and how it can be used to access OpenGL 1.2 and 1.3 functionality. Give you an overview of the new options available in OpenGL 1.2 and 1.3, as well as a look at some of the most useful extensions. Give you some tips for using extensions while ensuring that your game will run well on a wide range of systems. Provide a demo showing you how to use the techniques described. The Problem Headers and libraries. As I mentioned in the introduction, the latest version of the OpenGL headers and libraries available from Microsoft correspond to version 1.1. If you look around on the Internet, you may come across another OpenGL implementation for Windows created by Silicon Graphics. SGI's implementation also corresponds to OpenGL 1.1. Unfortunately, this implementation is no longer supported by SGI. In addition, the Microsoft implementation is based upon it, so you really gain nothing by using it. Where does that leave us? Well, there is reason to hope that someone will release up to date libraries. Although, to my knowledge, no one has committed to doing so, several parties have discussed it. Microsoft is the obvious candidate, and despite years of promising and not delivering, it appears that they have taken an interest in the recently proposed OpenGL 2.0. Whether or not that interest will lead to action remains to be seen, but given the large number of graphics workstations running Windows NT and Windows 2000, it's not beyond the realm of possibility. Besides Microsoft, there has apparently been discussion among the members of OpenGL's Architectural Review Board (ARB) to provide their own implementation of the headers and libraries. At present, though, this is still in the discussion stage, so it may be a while before we see anything come of it. The runtime. Most versions of Windows (the first release of Windows 95 being the exception) come with a 1.1 runtime. Fortunately, this isn't really as important as the other elements. All that the runtime does is guarantee a baseline level of functionality, and allow you to interface with the ICD. The ICD. This is the one area where you're okay. Most hardware vendors (including NVIDIA and ATI) have been keeping up with the latest OpenGL standard. For them to be able to advertise that their drivers are compliant with the OpenGL 1.3 standard, they have to support everything included in the 1.3 specification (though not necessarily in hardware). The cool thing about this is that the ICD contains the code to do everything in newer versions of OpenGL, and we can take advantage of that. The thing that's important to note here is that although the headers and libraries available don't directly allow you to access newer OpenGL features, the features do exist in the video card drivers. You just need to find a way to access those features in our code. We do that by using OpenGL's extension mechanism. OpenGL Extensions As you're aware, the graphics industry has been moving at an alarmingly rapid pace for many years now. Today, consumer-level video cards include features that were only available on professional video cards (costing thousands of dollars) a few years ago. Any viable graphics API has to take these advances into account, and provide some means to keep up with them. OpenGL does this through extensions. If a graphics vendor adds a new hardware feature that they want OpenGL programmers to be able to take advantage of, they simply need to add support for it in their ICD, and then provide developers with documentation about how to use the extension. This is oversimplifying a bit, but it's close enough for our purposes. As an OpenGL programmer, you can then access the extension through a common interface shared by all extensions. You'll learn how to do that in the "Using Extensions" section, but for now, let's look at how extensions are identified, and what they consist of. Extension Names Every OpenGL extension has a name by which it can be precisely and uniquely identified. This is important, because hardware vendors will frequently introduce extensions with similar functionality but very different semantics and usage. You need to be able to distinguish between them. For example, both NVIDIA and ATI provide extensions for programmable vertex and pixel shaders, but they bear little resemblance to each other. So, if you wanted to use pixel shaders in your program, it wouldn't be enough to find out if the hardware supported pixel shaders. You'd have to be able to specifically ask whether NVIDIA's or ATI's version is supported, and handle each appropriately. All OpenGL extensions use the following naming convention: PREFIX_extension_name The "PREFIX" is there to help avoid naming conflicts. It also helps identify the developer of the extension or, as in the case of EXT and ARB, its level of promotion. Table 1 lists most of the prefixes currently in use. The "extension_name" identifies the extension. Note that the name cannot contain any spaces. Some example extension names are ARB_multitexture, EXT_bgra, NV_vertex_program, and ATI_fragment_shader Table 1 - OpenGL Extension Prefixes Prefix Meaning/Vendor ARBExtension approved by OpenGL's Architectural Review Board (first introduced with OpenGL 1.2) EXT Extension agreed upon by more than one OpenGL vendor 3DFX 3dfx Interactive APPLE Apple Computer ATI ATI Technologies ATIX ATI Technologies (experimental) HP Hewlett-Packard INTEL Intel Corporation BM International Business Machines KTX Kinetix NV NVIDIA Corporation MESA http://www.mesa3d.org OML OpenML SGI Silicon Graphics SGIS Silicon Graphics (specialized) SGIX Silicon Graphics (experimental) SUN Sun Microsystems SUNX Sun Microsystems (experimental) WIN Microsoft What an Extension Includes You now know what an extension is, and how extensions are named. Next, let's turn our attention to the relevant components of an extension. There are four parts of an extension that you need to deal with. Name Strings Each extension defines a name string, which you can use to determine whether or not the OpenGL implementation supports it. By passing GL_EXTENSIONS to the glGetString() method, you can get a space-delimited buffer containing all the extension name strings supported by the implementation. Name strings are generally the name of the extension preceded by another prefix. For core OpenGL name strings, this is always GL_ (e.g. GL_EXT_texture_compression). When the name string is tied to a particular windows system, the prefix will reflect which system that is (e.g. Win32 uses WGL_). Functions Many (but not all) extensions introduce one or more new functions to OpenGL. To use these functions, you'll have to obtain their entry point, which requires that you know the name of the function. This process is described in detail in the "Using Extensions" section. The functions defined by the extension follow the naming convention used by the rest of OpenGL, namely glFunctionName(), with the addition of a suffix using the same letters as the extension name's prefix. For example, the NV_fence extension includes the functions glGetFencesNV(), glSetFenceNV(), glTestFenceNV(), and so on. Enumerants An extension may define one or more enumerants. In some extensions, these enumerants are intended for use in the new functions defined by the extension (which may be able to use existing enumerants as well). In other cases, they are intended for use in standard OpenGL functions, thereby adding new options to them. For example, the ARB_texture_env_add extension defines a new enumerant, GL_ADD. This enumerant can be passed as the params parameter of the various glTexEnv() functions when the pname parameter is GL_TEXTURE_ENV_MODE. The new enumerants follow the normal OpenGL naming convention (i.e. GL_WHATEVER), except that they are suffixed by the letters used in the extension name's prefix, such as GL_VERTEX_SOURCE_ATI. Using new enumerants is much simpler than using new functions. Usually, you will just need to include a header defining the enumerant, which you can get from your hardware vendor or from SGI. Alternately, you can define the enumerant yourself if you know the integer value it uses. This value can be obtained from the extension's documentation. Dependencies Very few extensions stand completely alone. Some require the presence of other extensions, while others take this a step further and modify or extend the usage of other extensions. When you begin using a new extension, you need to be sure to read the specification and understand the extension's dependencies. Speaking of documentation, you're probably wondering where you can get it, so let's talk about that next. Extension Documentation Although vendors may (and usually do) provide documentation for their extensions in many forms, there is one piece of documentation that is absolutely essential-- the specification. These are generally written as plain text files, and include a broad range of information about the extension, such as its name, version, number, dependencies, new functions and enumerants, issues, and modifications/additions to the OpenGL specification. The specifications are intended for use by developers of OpenGL hardware or ICDs, and as such, are of limited use to game developers. They'll tell you what the extension does, but not why you'd want to use it, or how to use it. For that reason, I'm not going to go over the details of the specification format. If you're interested, Mark Kilgard has written an excellent article about it which you can read at OpenGL.org. [[alink='ref']1[/alink]] As new extensions are released, their specifications are listed in the OpenGL Extension Registry, which you can find at the following URL: http://oss.sgi.com/p...ample/registry/ This registry is updated regularly, so it's a great way to keep up with the newest additions to OpenGL. For more detailed descriptions of new extensions, your best bet is the websites of the leading hardware vendors. In particular, NVIDIA [[alink='ref']2[/alink]] and ATI [[alink='ref']3[/alink]] both provide a wealth of information, including white papers, Power Point presentations, and demos. Using Extensions Finally, it's time to learn what you need to do to use an extension. In general, there are only a couple of steps you need to take: determine whether or not the extension is supported obtain the entry point for the any of the extension's functions that you want to use define any enumerants you're going to use. Let's look at each of these steps in greater detail. [bquote]Caution: Before checking for extension availability and obtaining pointers to functions, you MUST have a current rendering context. In addition, the entry points are specific to each rendering context, so if you're using more than one, you'll have to obtain a separate entry point for each.[/bquote] Querying the Name String In order to find out whether or not a specific extension is available, first get the list of all the name strings supported by the OpenGL implementation. To do this, you just need to call glGetString() using GL_EXTENSIONS, like so: char* extensionsList = (char*) glGetString(GL_EXTENSIONS); After this executes, extensionsList points to a null-terminated buffer containing the name strings of all the extensions available to you. These name strings are separated by spaces, including a space after the last name string. [bquote]I'm casting the value returned by glGetString() because the function actually returns an array of unsigned chars. Since most of the string manipulation functions I'll be using require signed chars, I do the cast once now instead of doing it many times later.[/bquote] To find out whether or not the extension you're looking for is supported, you'll need to search this buffer to see if it includes the extension's name string. I'm not going to go into great detail about how to parse the buffer, since there are many ways to do so, and it's something that at this stage in your programming career, you should be able to do without much effort. One thing you need to watch out for, though, is accidentally matching a substring. For example, if you're trying to use the EXT_texture_env extension, and the implementation doesn't support it, but it does support EXT_texture_env_dot3, then calling something like: strstr("GL_EXT_texture_env", extensionsList); is going to give you positive results, making you think that the EXT_texture_env extension is supported, when it's really not. The CheckExtension() function in the demo program included with this article shows one way to avoid this problem. Obtaining the Function's Entry Point Because of the way Microsoft handles its OpenGL implementation, calling a new function provided by an extension requires that you request a function pointer to the entry point from the ICD. This isn't as bad as it sounds. First of all, you need to declare a function pointer. If you've worked with function pointers before, you know that they can be pretty ugly. If not, here's an example: void (APIENTRY * pglCopyTexSubImage3DEXT) (GLenum, GLint, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei) = NULL; [bquote]Update 4/24/03: For the book, and initially here, I used the function name (i.e. glCopyTexSubImage3DEXT) as the pointer name. A reader pointed out to me that on a number of operating systems (e.g. Linux) this can cause serious problems, so it should be avoided. Thanks, Ian![/bquote] Now that we have the function pointer, we can attempt to assign an entry point to it. This is done using the function wglGetProcAddress(): PROC wglGetProcAddress( LPCSTR lpszProcName ); The only parameter is the name of the function you want to get the address of. The return value is the entry point of the function if it exists, or NULL otherwise. Since the value returned is essentially a generic pointer, you need to cast it to the appropriate function pointer type. Let's look at an example, using the function pointer we declared above: pglCopyTexSubImage3DEXT = (void (APIENTRY *) (GLenum, GLint, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei)) wglGetProcAddress("glCopyTexSubImage3DEXT"); And you thought the function pointer declaration was ugly. You can make life easier on yourself by using typedefs. In fact, you can obtain a header called "glext.h" which contains typedefs for most of the extensions out there. This header can usually be obtained from your favorite hardware vendor (for example, NVIDIA includes it in their OpenGL SDK), or from SGI at the following URL: http://oss.sgi.com/p...ple/ABI/glext.h Using this header, the code above becomes: PFNGLCOPYTEXSUBIMAGE3DEXTPROC pglCopyTexSubImage3DEXT = NULL; pglCopyTexSubImage3DEXT = (PFNGLCOPYTEXSUBIMAGE3DEXTPROC) wglGetProcAddress("glCopyTexSubImage3DEXT"); Isn't that a lot better? As long as wglGetProcAddress() doesn't return NULL, you can then freely use the function pointer as if it were a normal OpenGL function. Declaring Enumerants To use new enumerants defined by an extension, all you have to do is define the enumerant to be the appropriate integer value. You can find this value in the extension specification. For example, the specification for the EXT_texture_lod_bias says that GL_TEXTURE_LOD_BIAS_EXT should have a value of 0x8501, so somewhere, probably in a header (or possibly even in gl.h), you'd have the following: #define GL_TEXTURE_LOD_BIAS_EXT 0x8501 Rather than defining all these values yourself, you can use the glext.h header, mentioned in the last section, since it contains all of them for you. Most OpenGL programmers I know use this header, so don't hesitate to use it yourself and save some typing time. Win32 Specifics In addition to the standard extensions that have been covered so far, there are some extensions that are specific to the Windows system. These extensions provide additions that are very specific to the windowing system and the way it interacts with OpenGL, such as additional options related to pixel formats. These extensions are easily identified by their use of "WGL" instead of "GL" in their names. The name strings for these extensions normally aren't included in the buffer returned by glGetString(GL_EXTENSIONS), although a few are. To get all of the Windows-specific extensions, you'll have to use another function, wglGetExtensionsStringARB(). As the ARB suffix indicates, it's an extension itself (ARB_extensions_string), so you'll have to get the address of it yourself using wglGetProcAddress(). Note that for some reason, some ICDs identify this as wglGetExtensionsStringEXT() instead, so if you fail to get a pointer to one, try the other. The format of this function is as follows: const char* wglGetExtensionsStringARB(HDC hdc); [bquote]Caution: Normally, it's good practice to check for an extension by examining the buffer returned by glGetString() before trying to obtain function entry points. However, it's not strictly necessary to do so. If you try to get the entry point for a non-existant function, wglGetProcAddress() will return NULL, and you can simply test for that. The reason I'm mentioning this is because to use wglGetExtensionsStringARB(), that's exactly what you have to do. It appears that with most ICDs, the name string for this extension, WGL_ARB_extensions_string, doesn't appear in the buffer returned by glGetString(). Instead, it is included in the buffer returned by wglGetExtensionsStringARB()! Go figure.[/bquote] Its sole parameter is the handle to your rendering context. The function returns a buffer similar to that returned by glGetString(GL_EXTENSIONS), with the only difference being that it only contains the names of WGL extensions. [bquote]Some WGL extension string names included in the buffer returned by wglGetExtensionsStringARB() may also appear in the buffer returned by glGetString(). This is due to the fact that those extensions existed before the creation of the ARB_extensions_string extension, and so their name strings appear in both places to avoid breaking existing software.[/bquote] Just as there is a glext.h header for core OpenGL extensions, so is there a wglext.h for WGL extensions. You can find it at the following link: http://oss.sgi.com/p...le/ABI/wglext.h Extensions and OpenGL 1.2 and 1.3, and the Future Back at the beginning of this article, I said that OpenGL 1.2 and 1.3 features can be accessed using the extensions mechanism, which I've spent the last several pages explaining. The question, then, is how you go about doing that. The answer, as you may have guessed, is to treat 1.2 and 1.3 features as extensions. When it comes right down to it, that's really what they are, since nearly every feature that has been added to OpenGL originated as an extension. The only real difference between 1.2 and 1.3 features and "normal" extensions is that the former tend to be more widely supported in hardware, because, after all, they are part of the standard. [bquote] Sometimes, an extension that has been added to the OpenGL 1.2 or 1.3 core specification will undergo slight changes, causing the semantics and/or behavior to be somewhat different from what is documented in the extension's specification. You should check the latest OpenGL specification to find out about these changes.[/bquote] The next update to OpenGL will probably be 1.4. It will most likely continue the trend of promoting successful extensions to become part of the standard, and you should be able to continue to use the extension mechanism to access those features. After that, OpenGL 2.0 will hopefully make its appearance, introducing some radical changes to the standard. Once 2.0 is released, new headers and libraries may be released as well, possibly provided by the ARB members. These will make it easier to use new features. What You Get As you can see, using OpenGL 1.2 and 1.3, and extensions in general, isn't a terribly difficult process, but it does take some extra effort. You may be wondering what you can gain by using them, so lets take a closer look at them. The following sections list the features added by OpenGL 1.2 and 1.3, as well as some of the more useful extensions currently available. With each feature, I've included the extension you can use to access it. OpenGL 1.2 3D Textures allow you to do some really cool volumetric effects. Unfortunately, they require a significant amount of memory. To give you an idea, a single 256x256x256 16 bit texture will use 32 MB! For this reason, hardware support for them is relatively limited, and because they are also slower than 2D textures, they may not always provide the best solution. They can, however, be useful if used judiciously. 3D textures correspond to the EXT_texture3D extension. BGRA Pixel Formats make it easier to work with file formats which use blue-green-red color component ordering rather than red-green-blue. Bitmaps and Targas are two examples that fall in this category. BGRA pixel formats correspond to the EXT_bgra extension. Packed Pixel Formats provide support for packed pixels in host memory, allowing you to completely represent a pixel using a single unsigned byte, short, or int. Packet pixel formats correspond to the EXT_packed_pixels extension, with some additions for reversed component order. Normally, since texture mapping happens after lighting, modulating a texture with a lit surface will "wash out" specular highlights. To help avoid this affect, the Separate Specular Color feature has been added. This causes OpenGL to track the specular color separately and apply it after texture mapping. Separate specular color corresponds to the EXT_separate_specular_color extension. Texture Coordinate Edge Clamping addresses a problem with filtering at the edges of textures. When you select GL_CLAMP as your texture wrap mode and use a linear filtering mode, the border will get sampled along with edge texels. Texture coordinate edge clamping causes only the texels which are actually part of the texture to be sampled. This corresponds to the SGIS_texture_edge_clamp extension (which normally shows up as EXT_texture_edge_clamp in the GL_EXTENSIONS string). Normal Rescaling allows you to automatically scale normals by a value you specify, which can be faster than renormalization in some cases, although it requires uniform scaling to be useful. This corresponds to the EXT_rescale_normal extension. Texture LOD Control allows you to specify certain parameters related to the texture level of detail used in mipmapping to avoid popping in certain situations. It can also be used to increase texture transfer performance, since the extension can be used to upload only the mipmap levels visible in the current frame, instead of uploading the entire mipmap hierarchy. This matches the SGIS_texture_lod extension. The Draw Element Range feature adds a new function to be used with vertex arrays. glDrawRangeElements() is similar to glDrawElements(), but it lets you indicate the range of indicies within the arrays that you are using, allowing the hardware to process the data more efficiently. This corresponds to the EXT_draw_range_elements extension. The Imaging Subset is not fully present in all OpenGL implementations, since it's primarily intended for image processing applications. It's actually a collection of several extensions. The following are the ones that may be of interest to game developers. EXT_blend_color allows you to specify a constant color which is used to define blend weighting factors. SGI_color_matrix introduces a new matrix stack to the pixel pipeline, causing the RGBA components of each pixel to be multiplied by a 4x4 matrix. EXT_blend_subtract gives you two ways to use the difference between two blended surfaces (rather than the sum). EXT_blend_minmax lets you keep either the minimum or maximum color components of the source and destination colors. OpenGL 1.3 The Multitexturing extension was promoted to ARB status with OpenGL 1.2.1 (the only real change in that release), and in 1.3, it was made part of the standard. Multitexturing allows you to apply more than one texture to a surface in a single pass, which is useful in many things, such as lightmapping and detail texturing. It was promoted from the ARB_multitexture extension. Texture Compression allows you to either provide OpenGL with precompressed data for your textures, or to have the driver compress the data for you. The advantage in doing so is that you save both texture memory and bandwidth, thereby improving performance. Compressed textures were promoted from the ARB_compressed_textures extension. Cube Map Textures provide a new type of texture consisting of six two-dimensional textures in the shape of a cube. Texture coordinates act like a vector from the center of the cube, indicating which face and which texels to use. Cube mapping is useful in environment mapping and texture-based diffuse lighting. It is also important for pixel-perfect dot3 bumpmapping, as a normalization lookup for interpolated fragment normals. It was promoted from the ARB_texture_cube_map extension. Multisampling allows for automatic antialiasing by sampling all geometry several times for each pixel. When it's supported, and extra buffer is created which contains color, depth, and stencil values. Multisampling is, of course, expensive, and you need to be sure to request a rendering context that supports it. It was promoted from the ARB_multisampling extension. The Texture Add Environment Mode adds a new enumerant which can be passed to glTexEnv(). It causes the texture to be additively combined with the incoming fragment. This was promoted from the ARB_texture_env_add extension. Texture Combine Environment Modes add a lot of new options for the way textures are combined. In addition to the texture color and the incoming fragment, you can also include a constant texture color and the results of the previous texture environment stage as parameters. These parameters can be combined using passthrough, multiplication, addition, biased addition, subtraction, and linear interpolation. You can select combiner operations for the RGB and alpha components separately. You can also scale the final result. As you can see, this addition gives you a great deal of flexibility. Texture combine environment modes were promoted from the ARB_texture_env_combine extension. The Texture Dot3 Environment Mode adds a new enumerant to the texture combine environment modes. The dot3 environment mode allows you to take the dot product of two specified components and place the results in the RGB or RGBA components of the output color. This can be used for per-pixel lighting or bump mapping. The dot3 environment mode was promoted from the ARB_texture_env_dot3 extension. Texture Border Clamp is similar to texture edge clamp, except that it causes texture coordinates that straddle the edge to sample from border texels only, rather than from edge texels. This was promoted from the ARB_texture_border_clamp extension. Transpose Matrices allow you to pass row major matrices to OpenGL, which normally uses column major matrices. This is useful not only because it is how C stores two dimensional arrays, but because it is how Direct3D stores matricies, which saves conversion work when you're writing a rendering engine that uses both APIs. This addition only adds to the interface; it does not change the way OpenGL works internally. Transpose matrices were promoted from the ARB_transpose_matrix extension. Useful Extensions At the time of writing, there are 269 extensions listed in the Extension Registry. Even if I focused on the ones actually being used, I couldn't hope to cover them all, even briefly. Instead, I'll focus on a few that seem to be the most important for use in games. Programmable Vertex and Pixel Shaders It's generally agreed that shaders are the future of graphics, so let's start with them. First of all, the terms "vertex shader" and "pixel shader" are in common usage because of the attention they received with the launch of DirectX 8. However, the OpenGL extensions that you use for them have different names. On NVIDIA cards, vertex shaders are called vertex programs, which are available through the NV_vertex_program extension. Pixel shaders are called register combiners, and are available through the NV_register_combiners and NV_texture_shader extensions. On ATI cards, vertex shaders are still called vertex shaders, and are available through the EXT_vertex_shader extension. Pixel shaders are called fragment shaders, and are available through the ATI_fragment_shader extension. If you're unfamiliar with shaders, then a quick overview is in order. Vertex shaders allow you to customize the geometry transformation pipeline. Pixel shaders work later in the pipeline, and allow you to control how the final pixel color is determined. Together, the two provide incredible functionality. I recommend that you download NVIDIA's Effects Browser to see examples of the things you can do with shaders. Using shaders can be somewhat problematic right now due to the fact that NVIDIA and ATI both handle them very differently. If you want your game to take advantage of shaders, you'll have to write a lot of special case code to use each vendor's method. At the ARB's last several meetings, this has been a major discussion point. There is a great deal of pressure to create a common shader interface. In fact, it is at the core of 3D Labs' OpenGL 2.0 proposal. Hopefully, the 1.4 specification will address this issue, but the ARB seems to be split as to whether a common shader interface should be a necessary component of 1.4. Compiled Vertex Arrays The EXT_compiled_vertex_arrays extension adds two functions which allow you to lock and unlock your vertex arrays. When the vertex arrays are locked, OpenGL assumes that their contents will not be changed. This allows OpenGL to make certain optimizations, such as caching the results of vertex transformation. This is especially useful if your data contains large numbers of shared vertices, or if you are using multipass rendering. When a vertex needs to be transformed, the cache is checked to see if the results of the transformation are already available. If they are, the cached results are used instead of recalculating the transformation. The benefits gained by using CVAs depend on the data set, the video card, and the drivers. Although you generally won't see a decrease in performance when using CVAs, it's quite possible that you won't see much of an increase either. In any case, the fact that they are fairly widely supported makes them worth looking into. WGL Extensions There are a number of extensions available that add to the way Windows interfaces with OpenGL. Here are some of the main ones. ARB_pixel_format augments the standard pixel format functions (i.e. DescribePixelFormat, ChoosePixelFormat, SetPixelFormat, and GetPixelFormat), giving you more control over which pixel format is used. The functions allow you to query individual pixel format attributes, and allow for the addition of new attributes that are not included in the pixel format descriptor structure. Many other WGL extensions are dependent on this extension. ARB_pbuffer adds pixel buffers, which are off-screen (non-visible) rendering buffers. On most cards, these buffers are in video memory, and the operation is hardware accelerated. They are often useful for creating dynamic textures, especially when used with the render texture extension. ARB_render_texture depends on the pbuffer extension. It is specifically designed to provide buffers that can be rendered to and be used as texture data. These buffers are the perfect solution for dynamic texturing. ARB_buffer_region allows you to save portions of the color, depth, or stencil buffers to either system or video memory. This region can then be quickly restored to the OpenGL window. Fences and Ranges NVIDIA has created two extensions, NV_fence and NV_vertex_array_range, that can make video cards based on NVIDIA chipsets use vertex data much more efficiently than they normally would. On NVIDIA hardware, the vertex array range extension is currently the fastest way to transfer data from the application to the GPU. Its speed comes from the fact that it allows the developer to allocate and access memory that normally can only be accessed by the GPU. Although not directly related to the vertex array range extension, the fence extension can help make it even more efficient. When a fence is added to the OpenGL command stream, it can then be queried at any time. Usually, it is queried to determine whether or not it has been completed yet. In addition, you can force the application to wait for the fence to be completed. Fences can be used with vertex array range when there is not enough memory to hold all of your vertex data at once. In this situation, you can fill up available memory, insert a fence, and when the fence has completed, repeat the process. Shadows There are two extensions, SGIX_shadow and SGIX_depth_texture, which work together to allow for hardware-accelerated shadow mapping techniques. The main reason I mention these is that there are currently proposals in place to promote these extensions to ARB status. In addition, NVIDIA is recommending that they be included in the OpenGL 1.4 core specification. Because they may change somewhat if they are promoted, I won't go into detail about how these extensions work. They may prove to be a very attractive alternative to the stencil shadow techniques presently in use. Writing Well-Behaved Programs Using Extensions Something you need to be very aware of when using any extension is that it is highly likely that someone will run your program on a system that does not support that extension. It's your responsibility to make sure that when this happens, your program behaves intelligently, rather than crashing or rendering garbage to the screen. In this section, you'll learn several methods to help ensure that your program gets the best possible results on all systems. The focus is on two areas: how to select which extensions to use, and how to respond when an extension you're using isn't supported. Choosing Extensions The most important thing you can do to insure that your program runs on as many systems as possible is to choose your extensions wisely. The following are some factors you should consider. Do you really need the extension? A quick look at the Extension Registry will reveal that there are a lot of different extensions available, and new ones are being introduced on a regular basis. It's tempting to try many of them out just to see what they do. If you're coding a demo, there's nothing wrong with this, but if you're creating a game that will be distributed to a lot of people, you need to ask yourself whether or not the extension is really needed. Does it make your game run faster? Does it make your game use less video memory? Does it improve the visual quality of your game? Will using it reduce your development time? If the answer to any of these is yes, then the extension is probably a good candidate for inclusion in your product. On the other hand, if it offers no significant benefit, you may want to avoid it altogether. What level of promotion is the extension at? Extensions with higher promotion levels tend to be more widely supported. Any former extension that has been made part of the core 1.2 or 1.3 specification will be supported in compliant implementations, so they are the safest to use (1.2 more so than 1.3 since it's been around for longer). ARB-approved extensions (the ones that use the ARB prefix) aren't required to be supported in compliant implementations, but they are expected to be widely supported, so they're the next safest. Extensions using the EXT prefix are supported by two or more hardware vendors, and are thus moderately safe to use. Finally, vendor specific extensions are the most dangerous. Using them generally requires that you write a lot of special case code. However, they often offer significant benefits, so they should not be ignored. You just have to be especially careful when using them. [bquote]There are times when a vendor-specific extension can be completely replaced by an EXT or ARB extension. In this case, the latter should always be favored.[/bquote] Who is your target audience? If your target audience is hardcore gamers, you can expect that they are going to have newer hardware that will support many, if not all, of the latest extensions, so you can feel safer using them. Moreover, they will probably expect you to use the latest extensions; they want your game to take advantage of all those features they paid so much money for! If, on the other hand, you're targeting casual game players, you'll probably want to use very few extensions, if any. When will your game be done? As mentioned earlier, the graphics industry moves at an extremely quick pace. An extension that is only supported on cutting-edge cards today may enjoy widespread support in two years. Then again, it may become entirely obsolete, either because it is something that consumers don't want, or because it gets replaced by another extension. If your ship date is far enough in the future, you may be able to risk using brand new extensions to enhance your game's graphics. On the other hand, if your game is close to shipping, or if you don't want to risk possible rewrites later on, you're better off sticking with extensions that are already well-supported. What To Do When an Extension Isn't Supported First of all, let's make one thing very clear. Before you use any extension, you need to check to see if it is supported on the user's system. If it's not, you need to do something about it. What that "something" is depends on a number of things, as we'll discuss here, but you really need to have some kind of contingency plan. I've seen OpenGL code that just assumes that the needed extensions will be there. This can lead to blank screens, unexpected rendering effects, and even crashes. Here are some of the possible methods you can use when you find that an extension isn't supported. Don't Use the Extension If the extension is non-critical, or if there is simply no alternate way to accomplish the same thing, you may be able to get away with just not using it at all. For example compiled vertex arrays (EXT_compiled_vertex_array) offer potential speed enhancements when using vertex arrays. The speed gains usually aren't big enough to make or break your program, though, so if they aren't supported, you can use a flag or other means to tell your program to not attempt to use them. Try Similar Extensions Because of the way that extensions evolve, it's possible that the extension you're trying to use is present under an older name (for example, most ARB extensions used to be EXT extensions, and vendor specific extensions before that). Or, if you're using a vendor-specific extension, there may be extensions from other vendors that do close to the same thing. The biggest drawback to this solution is that it requires a lot of special case code. Find an Alternate Way Many extensions were introduced as more efficient ways to do things which could already be done using only core OpenGL features. If you're willing to put in the effort, you can deal with the absence of these extensions by doing things the "old way". For instance, most things that can be done with multitexturing can be done using multipass rendering and alpha blending. Besides the additional code you have to add to handle this, your game will run slower because it has to make multiple passes through the geometry. That's better than not being able to run the game at all, and arguably better than simply dumping multitexturing and sacrificing visual quality. Exit Gracefully In some cases, you may decide that an extension is essential to your program, possibly because there is no other way to do the things you want to do, or because providing a backup plan would require more time and effort than you're willing to invest. When this happens, you should cause your program to exit normally, with a message telling the user what they need to be able to play your game. Note that if you choose to go this route, you should make sure that the hardware requirements listed on the product clearly state what is needed, or your customers will hate you. The Demo I've created a simple demo (see attached resource file) to show you some extensions in action. As you can see from Figure 1, the demo itself is fairly simple, nothing more than a light moving above a textured surface, casting a light on it using a lightmap. The demo isn't interactive at all. I kept it simple because I wanted to be able to focus on the extension mechanism. Figure 1: Basic lightmapping (click to enlarge) The demo uses seven different extensions. Some of them aren't strictly necessary, but I wanted to include enough to get the point across. Table 2 lists all of the extensions in use, and how they are used. Table 2 - Extensions used in the demo Extension Usage ARB_multitexture The floor in this demo is a single quad with two textures applied to it: one for the bricks, and the other for the lightmap, which is updated with the light's position. The textures are combined using modulation. EXT_point_parametetersWhen used, this extension causes point primitives to change size depending on their distance from the eye. You can set attenuation factors to determine how much the size changes, as well as define maximum and minimum sizes, and even specify that the points become partially transparent if they go below a certain threshold. The yellow light in the demo takes advantage of this extension. The effect is subtle, but you should be able to notice it changing size. EXT_swap_control Most OpenGL drivers allow the user to specify whether or not screen redraws should wait for the monitor's vertical refresh, or vertical sync. If this is enabled, your game's framerate will be limited to whatever the monitor refresh rate is set to. This extension allows you to programmatically disable vsync to get to avoid this limitation. EXT_bgra Since the demo uses Targas for textures, using this extension allows it to use their data directly without having to swap the red and blue components before creating the textures. ARB_texture_compression Since the demo only uses two textures, it won't gain much by using texture compression, but since it's easy, so I used it anyway. I allow the drivers to compress the data for me, rather than doing so myself beforehand. EXT_texture_edge_clamp Again, this extension wasn't strictly necessary, but the demo shows how easy it is to use. SGIS_generate_mipmap GLU provides a function, gluBuild2DMipMaps, that allows you to specify just the base level of a mipmap chain and automatically generates the other levels for you. This extension performs essentially the same function, with a couple of exceptions. One, it is a little more efficient. Two, it will cause all of the mipmap levels to be regenerated automatically whenever you change the base level. This can be useful when using dynamic textures. The full source code to the demo is included on the CD, but there are a couple of functions that I want to look at. The first is InitializeExtensions(). This function is called at startup, right after the rendering context is created. It verifies that the extensions used are supported, and gets the function entry points that are needed. bool InitializeExtensions() { if (CheckExtension("GL_ARB_multitexture")) { glMultiTexCoord2f = (PFNGLMULTITEXCOORD2FARBPROC) wglGetProcAddress("glMultiTexCoord2fARB"); glActiveTexture = (PFNGLCLIENTACTIVETEXTUREARBPROC) wglGetProcAddress("glActiveTextureARB"); glClientActiveTexture = (PFNGLACTIVETEXTUREARBPROC) wglGetProcAddress("glClientActiveTextureARB"); } else { MessageBox(g_hwnd, "This program requires multitexturing, which " "is not supported by your hardware", "ERROR", MB_OK); return false; } if (CheckExtension("GL_EXT_point_parameters")) { glPointParameterfvEXT = (PFNGLPOINTPARAMETERFVEXTPROC) wglGetProcAddress("glPointParameterfvEXT"); } if (CheckExtension("WGL_EXT_swap_control")) { wglSwapIntervalEXT = (PFNWGLSWAPINTERVALEXTPROC) wglGetProcAddress("wglSwapIntervalEXT"); } if (!CheckExtension("GL_EXT_bgra")) { MessageBox(g_hwnd, "This program requires the BGRA pixel storage" "format which is not supported by your hardware", "ERROR", MB_OK); return false; } g_useTextureCompression = CheckExtension("GL_ARB_texture_compression"); g_useEdgeClamp = CheckExtension("GL_EXT_texture_edge_clamp"); g_useSGISMipmapGeneration = CheckExtension("GL_SGIS_generate_mipmap"); return true; } As you can see, there are two extensions that the demo requires: multitexturing and BGRA pixel formats. Although I could have provided alternate ways to do both of these things, doing so would have unnecessarily complicated the program. If you're new to OpenGL or have only ever needed the functionality offered in OpenGL 1.1, you may be confused about what the problem is, so let's clarify. To develop for a given version of OpenGL on Windows, you need three things. First, you need a set of libraries (i.e. opengl32.lib and possibly others such as glu32.lib) and headers (i.e. gl.h, and so on) corresponding to the version you'd like to use. These headers and libraries contain the OpenGL functions, constants, and other things you need to be able to compile and link an OpenGL application. Second, the system you intend to run the application on needs to have an OpenGL dynamic link library (OpenGL32.dll), or OpenGL runtime library. The runtime needs to be for either the same or a more recent version of OpenGL as the headers and libraries you're using. Ideally, you will also have a third component, called an Installable Client Driver (IDC). An IDC is provided by the video card drivers to allow for hardware acceleration of OpenGL features, as well as possible enhancements provided by the graphics vendor. So, let's look at these three things and see why you have to jump through a few hoops to use anything newer than OpenGL 1.1:
  24. Looking for project

    Hello. I'm Programmer who is in search of 2D game project who preferably uses OpenGL and C++. You can see my projects in GitHub. Project genre doesn't matter (except MMO's :D).
  25. I assumed that if a shader is computationally expensive then the execution is just slower. But running the following GLSL FS instead just crashes void main() { float x = 0; float y = 0; int sum = 0; for (float x = 0; x < 10; x += 0.00005) { for (float y = 0; y < 10; y += 0.00005) { sum++; } } fragColor = vec4(1, 1, 1 , 1.0); } with unhandled exception in nvoglv32.dll. Are there any hard limits on the number of steps/time that a shader can take before it is shut down? I was thinking about implementing some time intensive computation in shaders where it would take on the order of seconds to compute a frame, is that possible? Thanks.