[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: playground/games/astrododge
From: Rivo Laks <rivolaks () hot ! ee>
Date: 2008-03-16 18:40:21
Message-ID: 1205692821.615461.14670.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 786318 by rivol:
Add shaders for the player's ship and render it
A data/shaders/ship.frag
A data/shaders/ship.vert
M +28 -0 src/mainwindow.cpp
M +5 -0 src/mainwindow.h
M +1 -1 src/modelloader.cpp
--- trunk/playground/games/astrododge/src/mainwindow.cpp #786317:786318
@@ -22,6 +22,7 @@
#include "gameworld.h"
#include "inputhandler.h"
#include "bullet.h"
+#include "modelloader.h"
#include <kgllib/camera.h>
#include <kgllib/rendertarget.h>
@@ -29,6 +30,7 @@
#include <kgllib/program.h>
#include <kgllib/fpscounter.h>
#include <kgllib/textrenderer.h>
+#include <kgllib/mesh.h>
#include <QTimer>
#include <QApplication>
@@ -156,6 +158,11 @@
mAsteroidProgram->bind();
mAsteroidProgram->setUniform("diffuseTexture", 0);
mAsteroidProgram->unbind();
+ // ship
+ mShipProgram = loadProgram("ship");
+ if (!mShipProgram) {
+ return;
+ }
// space
mSpaceProgram = loadProgram("space");
if (!mSpaceProgram) {
@@ -177,6 +184,11 @@
mBlurProgram->bind();
mBlurProgram->setUniform("inputTexture", 0);
mBlurProgram->unbind();
+
+ mShipModel = new Mesh();
+ ModelLoader::loadFromObj(mShipModel, "data/models/spaceship.obj");
+ mShipModel->setPrimitiveType(GL_TRIANGLES);
+ mShipModel->setProgram(mShipProgram);
}
@@ -381,6 +393,8 @@
renderSpace();
// Render asteroids
renderAsteroids();
+ // Render player's ship
+ renderPlayerShip();
glColor3f(1.0, 1.0, 0.8);
glPointSize(4.0);
@@ -451,6 +465,20 @@
mSpaceProgram->unbind();
}
+void MainWindow::renderPlayerShip()
+{
+ glPushMatrix();
+
+ // Calculate rotation matrix for the ship
+ Ship* ship = mWorld->ship();
+
+ glLoadIdentity();
+ glTranslatef(0, -2, -5);
+
+ mShipModel->render();
+ glPopMatrix();
+}
+
void MainWindow::renderAsteroids()
{
mTrianglesRendered = 0;
--- trunk/playground/games/astrododge/src/mainwindow.h #786317:786318
@@ -36,6 +36,7 @@
class RenderTarget;
class Program;
class Texture;
+class Mesh;
}
using namespace KGLLib;
@@ -83,6 +84,7 @@
void renderSpace();
void renderAsteroids();
void renderAsteroid(const Asteroid* a);
+ void renderPlayerShip();
void renderBlurTextures();
RenderTarget* getBlurredTexture(Texture* src, int targetw, int targeth, const Vector2f& ramp);
@@ -126,7 +128,10 @@
Program* mSpaceProgram;
Program* mToneMappingProgram;
Program* mBlurProgram;
+ Program* mShipProgram;
Texture* mAsteroidTexture;
+
+ Mesh* mShipModel;
};
#endif
--- trunk/playground/games/astrododge/src/modelloader.cpp #786317:786318
@@ -115,7 +115,7 @@
for (int i = 0; i < normals.count(); i++) {
normalsArray[i] = normals[i];
}
- //recalcNormals(vertices.count(), verticesArray, normalsArray, indices.count(), indicesArray);
+ recalcNormals(vertices.count(), verticesArray, normalsArray, indices.count(), indicesArray);
batch->setNormals(normalsArray);
}
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic