This! (And extra kudos for making the coder a woman.) =)
KIROKAZE
Stranger Things
Aqua Utopiaď˝ćľˇăŽĺşă§č¨ćśăç´Ąă

blake kathryn

Andulka

⣠Chile in a Photography âŁ
sheepfilms

#extradirty
Sweet Seals For You, Always
tumblr dot com
Acquired Stardust

Discoholic đŞŠ

ellievsbear
Cosimo Galluzzi
noise dept.
One Nice Bug Per Day
Xuebing Du

Kiana Khansmith
NASA
cherry valley forever

seen from Ukraine

seen from United States
seen from Germany

seen from United States
seen from Finland

seen from Malaysia

seen from Brazil
seen from United States

seen from Malaysia

seen from Poland

seen from United States

seen from Malaysia

seen from Singapore

seen from United States
seen from Azerbaijan

seen from Malaysia

seen from United States
seen from United States

seen from United States

seen from Singapore
@chainedchaos31
This! (And extra kudos for making the coder a woman.) =)

Anya is live and ready to show you everything. Watch her strip, dance, and perform exclusive shows just for you. Interact in real-time and make your fantasies come true.
Free to watch ⢠No registration required ⢠HD streaming
Teacher of the Month:Â âDonât be intimidated when your students begin teaching you.â
Linda Lerch Elementary technology teacher Mooresville, NC
Mrs. Lerch introduced the Hour of Code to all 3rd, 4th and 5th graders at her school, to âamazing results.â
Hereâs how it went down:
Mrs. Lerch was a technology teacher who had some experience programming in Visual Basic herself, from when she was in school. But several years ago, she concluded it was all too complex to approach with elementary school students.
Enter the Hour of Code. âI knew itâd be perfect,â she said. âWhat I didnât know was what a positive impact itâd make on my school, district, and myself, as a teacher.
At a school that never offered computer science before, the Hour of Code âignited a passion in students to seek out more opportunities to learn about coding,â said one of Mrs. Lerchâs fellow teachers.
One hour turned into something much bigger. Mrs. Lerch presented to other technology teachers in her district and managed to recruit several other schools to join in. The district superintendent visited her school during Decemberâs Hour of Code, then invited her to speak to the School Board, who asked her to lead a summer program in coding for elementary and middle school students district-wide. In the meantime, she guided students through Code.orgâs 20-hour intro course in school.
What was the Hour of Code experience like for your students?
One student pulled me aside and told me that he had been trying to figure out what career path he wanted to pursue. He told me the Hour of Code gave him clarity and has now directed him towards a computer science pathway.
Wow.
And the most amazing moment was when one of my students â who has a learning disability â came to me so excited when he finished. He confided in me that he is always the last to finish assignments in his class, always needing extra help and constantly struggling. Â Coding came to him like a light bulb. He GOT it. When he finished his program he then began helping others in his class. What a morale booster. When he was telling me his story about helping his classmates instead of them helping him, it reminded me why I became a teacher in the first place, to see that proverbial light bulb glow!
Why should other teachers care about computer science? It is a remarkable program, triggering students to become critical thinkers, problem solvers and self-directed learners which are all 21st-century skills.
What if teachers are totally new to the field? Give coding a try. Donât be afraid to try something new and donât be intimidated when your students begin teaching you something innovative. Thatâs the greatest treasure.
Whatâs next for students in your area? I plan to teach a complete unit in the middle of the year and possibly start a coding club. I have also been asked by several other schools to help them get started.
Anything else you think other teachers should know? All I can say is WOW. Code.org has provided me with the tools needed to make my classroom exciting again and has brought back my joy of teaching. Everyone knows the difficulties educators face today. From deep budget cuts, teachers surviving the past 8 years on frozen salaries, and the extra funds teachers pull from their personal accounts to enhance both students and classroom successes; Code.org has provided â free of charge â the essentials needed to help our students grow. I thank you and I know my students do too.Â
Weâre sharing this story as part of our new Teacher of the Month series. There are teachers around the world who are changing the face of computer science. Do you teach with a rockstar teacher? Nominate them to be a Code.org Teacher of the Month.
What an awesome teacher!
Small physics engine
So, I had a job interview last week and the company I was interviewing for looked over my current project on github. They seemed quite happy with what Iâd done but said they thought my gamescreen class could use some work - in particular the collision related code. They asked what I thought I could do to improve it and I mentioned that some sort of physics engine could help. But, I wasnât able to expand on what classes this should have.
So, I thought it would be a good idea to study up on this so I donât get caught out in such a way again. The code in question is here. (Iâm sick of the formatting in tumblr. And I managed to wreck the DNS for my new website - so pastebin it is for now).
My improvement ideas are to have a physics engine class that contains an array of pointers to all entities currently in the game. Also a collision class (or even just a struct, really, or a pair) that contains pointers to both entities in the collision. This could potentially contain information about the relative points of collision, though I donât need that for this particular little game.
This does mean that all my entities should inherit from the same object for this to work. They currently do, but that object is Sprite. I think there should be an intermediate object in between so the physics info doesn't trickle down into what should just be a rendering class.
The physics engine class could have a process collisions function which would test each object against each other object to see if they are colliding. If there is a collision it would create a collision object and add it to a collisions array.
Then the function should loop through the collision array and call the (currently non-existent) resolution function for each object in the collision.
So far this all sounds great - the only thing really getting in the way are the animations. Either I would have to pass the animation array to the physics class and then each object, or I will have to change how animations are handled.Â
If I was just making a game, I donât think Iâd bother, but since Iâm trying to learn how to structure an engine then I think I ought to. So, before I embark on this physics overhaul I will need to investigate how to decouple the animations from everything.
How did such a small project get so tangled already?
Bitmap fonts
Well - this took me a lot longer than I thought it would. The goal was to enable the ability to draw strings of a certain font and colour within my game. I could have just made an image of each of the words I want to appear in the game (since there arenât many), but for a larger game, or a game that needs to be translated into lots of languages, this would mean a lot of content development. Also, the goal of this project is to learn things, and I would learn nothing from using images for all my words.
I had used bitmap fonts in OpenGL once before, but using tinyXML and an OpenGL framework/engine that I did not write. So I wanted to see if I could do it on my own (though heavily referencing what I did before).
I created a Text class that is responsible for drawing text. I should really have called this the font class, since I am not actually storing the text to be drawn, rather the information I need about the font. The Text class inherits from the SPrite class.
The first thing the Text class must do is load in the font image and the xml. The image was easy enough, since I already had the ability to load images. Loading the xml took me a lot longer.Â
I decided to use RapidXML after a bit of research because it was called the âfastestâ implementation with the least overhead. With my lofty goal of being an engine programmer at some point, and the idea being to practice making my projects as fast as they can be, this sounded like a good idea.Â
Well, you can see my frustrations in my previous post. I was stuck on that problem for quite some time. Just as I was ready to give up and try a different api, I discovered my error. I had tried to read from the document tag twice, instead of once from the doc tag, and once from the child of the doc tag.
The error is on line 2 of the following code - the program kept segfaulting on line 3. And RapidXML does not throw any errors outside of its parse function.
xml_node<> *font = doc.first_node("font"); font = doc.first_node("chars"); xml_node<> *character = font->first_node("char");
The fix seems so small - properly reading from the docâs child tag (âcharsâ):
xml_node<> *font = doc.first_node("font"); font = font->first_node("chars"); xml_node<> *character = font->first_node("char");
Anyway, once I fixed that, the rest of the code worked completely perfectly. Onto the drawString method. The idea here is to modify the underlying sprite variable, draw a character and repeat for each character before the function ends.
This involves modifying the x,y coordinates of each corner of the sprite, as well as the centre position of the sprite and the UV coordinates. This part of the code I had from the last time I tried this - which I believe was written by my coworker at the time: Sam Cartwright.Â
My current version of the code is as follows. Pretty sure I can make this faster by getting rid of that vector.
glm::vec3 centrePos = m_oCentrePos; float curX = 0; const char* currentLetter = a_szToDraw; //not sure if better to put NULL or 0 here instead of the null terminator character. probably no difference. while(*currentLetter != '\0') { //loop through all letters to find current. Got to be a faster way. A map? for(std::vector<Character>::iterator it = m_characters.begin(); it != m_characters.end(); it++) { if((*it).value == *currentLetter) { Character& thisChar = *it; //move the position of the sprite m_oCentrePos.x = centrePos.x + curX + thisChar.width*0.5; //update the width and height and align bottom of the letters UpdateCornersGrounded(thisChar.width, thisChar.height); //change the UVs setSpriteUVCoords(thisChar.x/(float)m_uiTextureWidth, 1.0 - (thisChar.y+ thisChar.height)/(float)m_uiTextureHeight, (thisChar.x + thisChar.width)/(float)m_uiTextureWidth, 1.0 - (thisChar.y )/(float)m_uiTextureHeight); Sprite::Update(0); Sprite::Draw(VBO, IBO, shader); curX += thisChar.width; break; } } currentLetter++; } m_oCentrePos = centrePos;
Originally I was not taking into account the width of the current letter when setting the centre position (and I also had the y coordinates the wrong way around), which gave me this delightful result:
I also wasnât placing the bottom of the letters at 0 on the y co-ordinate. These were all relatively minor fixes though!
(Right, putting code in here just does not work. I think itâs time I set up a proper blog so I can format everything correctly).
XML fail
Not having such good luck today. I thought Iâd try loading in bitmap fonts for the game, but so far Iâve spent all day arguing with rapidXML to try and get it to parse a damn file.
The process is, load the file myself, put it through rapidxmlâs parser then step through to get to the nodes I need. RapidXML has a requirement that the string containing the xml file data needs to stay alive throughout the entire process. And for some reason after parsing this string seems to lose data and cuts of 90% of the file. But itâs all read in correctly before parsing! And Iâm not receiving any error messages. Iâm so confused.
Hereâs my code if anyone wants to have a look:
char szBuffer[128]; std::ifstream ins(a_szXMLName); char c; ins.get(c); while(!ins.eof()) { buffer += c; ins.get(c); } strcpy(szTextFromFile, buffer.c_str()); xml_document<> doc; try { doc.parse<parse_no_data_nodes>(szTextFromFile); } catch(parse_error p) { std::cout << p.what() << std::endl; const char *w = p.where<char>(); } font = doc.first_node("chars"); xml_node<> *character = font->first_node("char");
I guess Iâll put this one down for now and revisit it later. I know I could use a different xml parser, but this one looks like one that could be widely used in industry. Also Iâm annoyed at it beating me - I feel like moving to another parser would be giving up. I have done this task once before in TinyXML though.

Anya is live and ready to show you everything. Watch her strip, dance, and perform exclusive shows just for you. Interact in real-time and make your fantasies come true.
Free to watch ⢠No registration required ⢠HD streaming
Member variable construction order
Well, today I added a simple state machine stack to my game in order to easily change between screens. It almost worked first time, which made me feel pretty good. I created a base Screen class as well as a GameScreen and a MainMenuScreen so I could test it out. The main function contains a stack of screen pointers so I can update and render the top screen on the stack and keep the other screens loaded if I need to.
I didnât really learn much from this process - it was all pretty straighforward.
One thing I did learn, though, was in which order class member variables were constructed in initialiser lists. In the GameScreen class the player object relies on the playerbullets vector having already been constructed. C++ does some odd things sometimes - so I wasnât sure how to make sure the playerbullets vector was created before the player. I thought it wouldnât be so simple as listing the playerbullets vector first in the initialisation list of the class constructor, and I was right.
Turns out member variables are created in the order they are defined in the class. And someone provided a nicely worded reason why this is so, I wonât try to paraphrase:
The reason for which they are constructed in the member declaration order and not in the order in the constructor is that one may have several constructors, but there is only one destructor. And the destructor destroy the members in the reserse order of construction.
Once again, if youâd like to download the project, please click here.
PS - thanks to the person who sent me a message about my previous post regarding animated sprites. Once the timer reached the âtime per frameâ variable I was resetting it to zero. The advice was to simply subtract delta time from the timer to make sure the excess time carries over to the next frame to ensure the animation runs at the correct time.
Animated Sprites
Today I thought I would tackle animated sprites in my little opengl project. Despite having taught my students how to do these in 2013 I was a little rusty (they also had a graphics framework to help them out). It didnât take too long to get back into the swing of it though.
To start with, I modified my Sprite class to add a function that would modify the UV (or st) co-ordinates, so I could draw pieces of loaded textures instead of always the whole texture.
Next, I created an AnimatedSprite class to inherit from my Sprite class. I added a whole heap of extra variables (probably too many, to be honest, though I use them all): the number of frames per row, the number of frames per column, the width and height of each frame, the total time the animation will take, the current frame, the current time, and some booleans to determine whether or not to loop the animation or to kill it.
All the work is done inside of the update function. I simply add to the current timer, if that exceeds the time per frame then it is time to change frames. Update the frame number, adjust the UVs accordingly and do a check to see if the animation has finished. If it has finished and it is looping then simply return the frame counter to zero, otherwise trigger the ârunningâ boolean.
I also went through and fixed my code to be const correct (though Iâm still not passing everything by reference - do you need to do that even for simple types?)
//add to sprite timer m_fCurrentTime += a_dDeltaTime; //if timer goes past certain value if(m_fCurrentTime >= m_fTimePerFrame) {   m_fCurrentTime = 0;   //move to next frame   m_iCurrentFrame++;   if(m_iCurrentFrame >= m_iNumCols * m_iNumRows)   {     if(m_bLooping)       m_iCurrentFrame = 0;     else       m_bStillRunning = false;   }   //update UVs   Sprite::setSpriteUVCoords((1.0*(m_iCurrentFrame%m_iNumCols))/m_iNumCols, (1.0*(m_iCurrentFrame/m_iNumRows))/m_iNumRows, (1.0*(m_iCurrentFrame%m_iNumCols + 1))/m_iNumCols, (1.0*(m_iCurrentFrame/m_iNumRows + 1))/m_iNumRows);   } Sprite::Update(a_dDeltaTime);
You can download the whole project from here
Adding to my little project
Well - nothing terribly interesting to me in this update - a chunk of rather inefficient gameplay code.
I have now added audio to the project via fmod - so far different laser noises for the player and enemies. I will have to add some background music at some point.
I also changed my player movement to adhere a bit more realistically to physics. Pressing forward now modifies the acceleration and the player sprite will have itâs velocity adjusted accordingly. Friction will slow it down until it eventually comes to a rest. I might change the enemies to move in this way too - then I can try and implement collision resolution between the two.
I did implement collision detection, just basic AABBs - though I feel my calculation of these is awfully slow. I need to find a better way of doing it. I have loops everywhere right now...
Also just amended this so the players and enemies wrap around on the screen once their centre positions move out of screen space.
Next things to add - explosions, player lives, score, menu system, music, particles(?).
Grab the project here:Â https://github.com/BecFernandez/OpenGLPractice
Hey, you're doing OpenGL stuff now... finally! How you liking it?
Yeah - I've been studying it on and off for a while now. I love it - took me a while to get my head around this version after having been quite familiar with intermediate mode, but I'm getting more and more used to it. I'll have to move on to something 3D once I'm done making this little project look more like a game.
Now coming at you from Amsterdam
Since my last blog post I've actually moved from Sydney to Amsterdam! My partner received a job here, so we both moved over :) This does mean that I'm now unemployed. Which I thought would be good, so I can play all the games I've been too busy for and code all the things I want to. However staying at home with no one to bounce ideas from is not something I enjoy. Thus I'm very keen on finding some work to stop me from going crazy!
In the mean time, (as well as exploring this beautiful new city) I have been working a little on that little OpenGL practice project - so far just added bullets. I spent quite a bit of time updating from glfw 2 to glfw3. Since I didn't upload any of the glfw library files to the repository and I couldn't find the correct compatible library files online I was forced to update to the latest version of glfw. Not a big deal, I have used glfw3 before and the basic walkthrough on their website is quite good.Â
However I managed to get stuck for an evening on a rather simple problem. I have created an init function for my program. This does most of the setting up, loading shaders, initialising systems, etc. This particular problem was about window creation. With glfw3 you have the ability to create multiple windows - so the create window function returns a handle to the window you just created. You need* to use this window handle in other glfw functions - for example checking for keyboard input. So I created a window handle pointer in main, set it to nullptr, then passed it into my init function, with the intention being for the init function to create the window and effectively fill the pointer.
GLFWwindow* window = nullptr; init(window);
However when I ran this, when I came back to the main function the window pointer was always still null.
I am ashamed to say how long it took me to work this out (maybe I can blame jetlag?). This is actually, somehow, not a problem I have encountered before. Eventually I worked out that the pointer was being passed by value. While you can change the contents of the address being pointed to - any changes to the actual stored address only applies within the function. I needed to pass the pointer by reference to fix my problem. Which meant my function needed to change to:
bool init(GLFWwindow*& window)
Which should have been obvious. I just haven't ever needed to do this before - which really surprises me. How can I not have come across this scenario before??
Well, no matter. I'm never going to forget this ever again.
I also wasted some time trying to work out why my sprites were not drawing. Eventually I worked out it was because my shaders are at level 330, and my laptop was using the inbuilt Intel graphics instead of the dedicated graphics card. Forcing the laptop to use dedicated graphics fixed this.Â

Anya is live and ready to show you everything. Watch her strip, dance, and perform exclusive shows just for you. Interact in real-time and make your fantasies come true.
Free to watch ⢠No registration required ⢠HD streaming
Bitfields and bitfields
One of my old students showed me a nifty piece of code that will represent a bitfield:Â http://pastebin.com/NCyhFtuK
However I had not seen the notation before where there is a colon and a number following a variable declaration. I guessed it was specifying the number of bits that variable should take up (since that would make this piece of code make sense).Â
Unsurprisingly that is exactly the case - and this syntax is also referred to as bitfields:Â http://msdn.microsoft.com/library/ewwyfdbeÂ
This only works inside structures, classes or unions - outside of these situations it will cause a syntax error.
It's possible to have unnamed bitfields to create padding.
struct Stuff {    int num1 : 3;    int      : 3;    int num2 : 3; }
With some compilers the bitfields are aranged in memory so that they do not cross word length boundaries of the underlying type. So there can be gaps between variables in memory.Â
Bitfields can even have a length of zero. This forces the alignment of the next bitfield to be the next word boundary. I really am not sure when this would come in useful though.
Matrices
Right, I haven't updated this in sooo long. Since I last posted I've been to Melbourne for almost 2 weeks, and Amsterdam for a week. And my students had all their assessments due - busy times!
At least I've finally found some time to do some coding, even if it's miniscule amounts.
I opened up my OpenGL practice project to see what I'd done last time. Not much, really. Just basic set up of opengl and drawing a single texture to the screen.
I decided that today I'd change the way I was placing the sprite so I would be using matrices instead. So I gave my sprite a global transform matrix (world matrix). And I created an orthographic projection matrix in the main file. No need for a view matrix in 2D (I think). Well, at least I don't plan on having the camera move around in this project.
I amended the shaders so that they take in both a world matrix and a projection/view matrix.Â
Now, instead of calculating the positions of the vertices in world space on the CPU like I did with the students this year (as they hadn't done shaders yet) I calculate them on the GPU, like it should be done. So, I pass to the shader: vertex position, projection matrix and world matrix of the sprite. Then multiply the vertex position by the world matrix, then the projection matrix. (Effectively converting it from local model co-ordinates, to global co-ordinates, to screen co-ordinates).
One important thing I learned today, as I changed my sprite to always initialise around the origing, was that if you multiply an unsigned int by an int, then you get an unsigned int. I was trying to multiply the width of my sprite by -1, which then just gave me the max value of an unsigned int. I had assumed it would implicitly convert to an int, but it turns out unsigned int takes priority.Â
Anyway, apart from me switching out the sprite, the running project doesn't look a whole lot different, but feel free to have a look at my code if you like!
https://github.com/BecFernandez/OpenGLPractice
Quick post today, as I'm not at home. Just reading "Game Engine Architecture" by Jason Gregory and I'm up to the part about starting up engine systems. Engine systems are normally implemented within the Singleton design pattern. Some engine systems depend on others, this they need to be created and deleted in a specific order. The systems can't be globals (or static) because then we have no control over when they are created or deleted (due to the "static initialisation order fiasco"). But static variables *inside* functions are only initialised when the function is first called. So if we place the instance of the engine system inside a static class as a static variable then things would be easier to control. Another method is to just leave all the constructors and destructors empty, and have dedicated initialise and destroy functions that you can call at specific times. This is an easy method that gives you waaaay more control. I think I'll give this one a go soon...
How I feel about diversity in games
Imagine, for a minute, that you are allergic to peanuts. Not in the way that they kill you almost instantly, but that they just make you feel sick after you eat them.
Now, imagine that when you were a child, all the ice cream in the world contained varying amounts of peanuts. And imagine that you really love ice cream.
There are ice creams with high peanut amounts that you canât even go near without wanting to vomit - youâve always avoided those. And there are ice creams with less peanuts that you have eaten regularly and put up with the sick feeling afterwards just so you can enjoy the ice cream taste.
Then there are some ice creams that barely have any peanuts in them. These are the ice creams you eat the most often. Youâve even started to get used to the queasy feeling they give you. Youâre tough, it doesnât really bother you. Small price to pay for awesome ice cream.
Some other people who are also allergic to peanuts - they do complain though. You look at them with scorn, obviously they are not tough enough to endure the queasiness. You wish theyâd just shut up so you can get back to enjoying ice cream in peace.
Then, frozen yoghurt is released. The people who arenât allergic to peanuts point it out to those allergic people who have been complaining. But, frozen yoghurt isnât really the same. Itâs a poor excuse for a frozen dessert. All sugar and no substance. And you donât even want to get started on the stores - all fluoro colours, bright lights and staff happier than kids TV presenters. No ice cream fan would be caught dead inside one.
The people allergic to peanuts keep complaining about the peanut ice cream. The non-allergic people keep pointing to the frozen yoghurt. You still think there is too much yelling, and you wish everyone would be quiet.
But then, one day, some ice cream comes out that has no peanuts in it. You eat it, and itâs amazing! Same ice cream taste but without the queasy feeling. So, ice cream without peanuts is possible after all! You eat the peanut free ice cream almost every other day.
For a while, thatâs enough. But then you go to the ice cream parlour and see all the different varieties of peanut ice cream. Youâve only got one peanut free flavour to try. You start to think that this isnât fair.
The allergic people are still loudly complaining about the lack of peanut-free ice cream. The non-allergic people now point to the one flavour of peanut ice cream and the frozen yoghurt. The allergic people scoff at the non-allergic people and call them stupid and flavour-ist. More yelling ensues.Â
You are torn. You really want more peanut-free ice cream. But you also think that yelling at the non-allergic people is a bit wrong. They canât help it, they donât know what itâs like to feel a bit sick each time they take a bite of otherwise delicious ice cream.Â
What do you do?
Oh my. I love metaphors/analogies like this.
My opinion on this:
I donât think the non-allergic ice cream lovers have much responsibility here, they just want to enjoy their ice cream. And they see already diversity around the peanuts. There is is ice cream with strawberry or lemon or both and so much else. Some donât mind the peanuts, but some of them LOVE peanuts, and why should that be a bad thing? And when they or the ice cream gets attacked, of course they try to defend themselves/it, even when that means to point out every single non-peanut meal that is out there. It doesnât make much sense, but pointing at every single peanut in different kinds of ice cream is not the way to handle this either. Especially when some of them donât even like ice cream, they just like to talk about peanuts.
Also the makers of ice cream have the freedom of putting as many peanuts in as they want, probably many like or even love peanuts, or their chefs say that they need more peanuts or different sizes of peanuts in the ice cream, because they see the market as a huge peanut loving mass, that needs to be served. And many otherâs donât mind many peanuts, so its a quite safe thing to put peanuts in. But here we come slowly to the problem. The ice cream industry doesnât really try new things, also there are probably not many people in the industry that are allergic to peanuts or at least not like them which makes them naturally think about ice cream without peanuts. And we can ask ourselves, why there arenât many of these people in these jobs. We can work on that, talk about the problems that lay there and push more different people there. The lack of peanuts doesnât make it automatically a good ice cream, itâs not easy to produce such a thing.
So in short: Push people who make good ice cream without peanuts. Tell your friends to buy good ice cream without peanuts. But donât say ice cream without peanuts is generally better than with, itâs all a matter of taste.
In my case: I didnât really eat much ice cream with peanuts I think, or I just ignored it. On the other hand, I avoided eating other meals (analogy: other media) which had way too many peanuts, so the taste of the rest of the meal was kinda destroyed. For me at least.
This is how people have conversations on Tumblr, yeah? (I'm such a n00b).
I am beginning to think it's important to have people who bring to light the problems that people allergic to peanuts have. Because some people honestly do not know. Or don't know how much it can make these people sick.
I wish that the allergic people would stop judging and berating those who don't know much about the allergy - I think it would be more helpful to patiently teach people about the allergy and how it affects people.
I also wish that people who aren't allergic would try to listen to those who are patiently explaining. The allergic people just want more peanut free ice cream, not less peanut ice cream in the world. There is not a finite amount of ice cream.
I can understand the frustration of those allergic people who have had to deal with some really awful screaming from some non-allergic people. I really don't know how I would act if chased out of my house by people who thought I was trying to ruin peanut ice cream. I'd probably lash out at them too :(
And then I'm beginning to understand the non-allergic people who keep reading about how the over-abundance of peanut ice cream is a bad thing (though this is where my metaphor falls down a bit). They don't think that their love of peanuts is harming anybody, so why do people keep saying it is? Can't they just leave them alone?
I think the love of peanuts can leak over out of the ice cream though, and cause issues for allergic people elsewhere. But not everyone thinks this way. Therin may lie the issue.
Overall I think, if all people had a bit more empathy, and were more forgiving of bursts of frustration then we'd be in a better place.
OK, well it's about time I actually started posting my own projects somewhere for others to see (also somewhere I won't lose them).
So far I've just posted a bit of an OpenGL test I had hanging around. The shader loading code is from the book: OpenGL 4.0 Shading Language Cookbook. The texture loading code was written by a teacher at AIE, so I probably shouldn't have posted it. Perhaps my next step can be to replace that.
This code obviously needs some tidying up and fleshing out. I would like to place the OpenGL initialisation into the common library I've created. And possibly also the Vertex and Index buffer objects.Â
I'm not sure whether it is better for all sprites to share buffers, or for each sprite to have their own buffers. I think I will need to research this next.
Next step is to add some camera code so I can change my screen coordinates. I will use orthographic projection while I'm working in 2D, but I'll try to make it easy enough to change to perspective for later on.
After that I would like to be able to move my sprites around. At school we teach the students to multiply the vertices of their sprites by transformation matrices, but I don't know if that's the best way to go about it. Another topic to research.

Anya is live and ready to show you everything. Watch her strip, dance, and perform exclusive shows just for you. Interact in real-time and make your fantasies come true.
Free to watch ⢠No registration required ⢠HD streaming
This is the story of a music journalist. He was a pretty successful music journalist. He had an ostensibly full-time gig at a pretty mainstream outlet. The pay wasnât great but it was enough to live on, and he was pretty thrilled he got to write about music for a living. He worked from home,...
Someone just pointed me at this after I posted my ice cream analogy. It's rather lovely.
How I feel about diversity in games
Imagine, for a minute, that you are allergic to peanuts. Not in the way that they kill you almost instantly, but that they just make you feel sick after you eat them.
Now, imagine that when you were a child, all the ice cream in the world contained varying amounts of peanuts. And imagine that you really love ice cream.
There are ice creams with high peanut amounts that you can't even go near without wanting to vomit - you've always avoided those. And there are ice creams with less peanuts that you have eaten regularly and put up with the sick feeling afterwards just so you can enjoy the ice cream taste.
Then there are some ice creams that barely have any peanuts in them. These are the ice creams you eat the most often. You've even started to get used to the queasy feeling they give you. You're tough, it doesn't really bother you. Small price to pay for awesome ice cream.
Some other people who are also allergic to peanuts - they do complain though. You look at them with scorn, obviously they are not tough enough to endure the queasiness. You wish they'd just shut up so you can get back to enjoying ice cream in peace.
Then, frozen yoghurt is released. The people who aren't allergic to peanuts point it out to those allergic people who have been complaining. But, frozen yoghurt isn't really the same. It's a poor excuse for a frozen dessert. All sugar and no substance. And you don't even want to get started on the stores - all fluoro colours, bright lights and staff happier than kids TV presenters. No ice cream fan would be caught dead inside one.
The people allergic to peanuts keep complaining about the peanut ice cream. The non-allergic people keep pointing to the frozen yoghurt. You still think there is too much yelling, and you wish everyone would be quiet.
But then, one day, some ice cream comes out that has no peanuts in it. You eat it, and it's amazing! Same ice cream taste but without the queasy feeling. So, ice cream without peanuts is possible after all! You eat the peanut free ice cream almost every other day.
For a while, that's enough. But then you go to the ice cream parlour and see all the different varieties of peanut ice cream. You've only got one peanut free flavour to try. You start to think that this isn't fair.
The allergic people are still loudly complaining about the lack of peanut-free ice cream. The non-allergic people now point to the one flavour of peanut ice cream and the frozen yoghurt. The allergic people scoff at the non-allergic people and call them stupid and flavour-ist. More yelling ensues.Â
You are torn. You really want more peanut-free ice cream. But you also think that yelling at the non-allergic people is a bit wrong. They can't help it, they don't know what it's like to feel a bit sick each time they take a bite of otherwise delicious ice cream.Â
What do you do?