コード例 #1
0
ファイル: Entity.cpp プロジェクト: Karanlos/Fenrir
	GLfloat* Entity::getBuffer(unsigned int& size, int buffers) {

		GLfloat* tempBuffer;
		GLfloat* vertexTempBuffer = mesh->getVertexBuffer();
		GLfloat* normalTempBuffer = getNormalBuffer();

		tempBuffer = new GLfloat[24];

		size = mesh->getNumVerticies(false) * (3 + 3) * sizeof(GLfloat);

		for(int i = 0; i < mesh->getNumVerticies(false); i++) {
			// Vertex Position
			tempBuffer[6 * i]     = vertexTempBuffer[3 * i];
			tempBuffer[6 * i + 1] = vertexTempBuffer[3 * i + 1];
			tempBuffer[6 * i + 2] = vertexTempBuffer[3 * i + 2];

			// Normal
			tempBuffer[6 * i + 3] = normalTempBuffer[3 * i];
			tempBuffer[6 * i + 4] = normalTempBuffer[3 * i + 1];
			tempBuffer[6 * i + 5] = normalTempBuffer[3 * i + 2];
		}

		delete vertexTempBuffer, normalTempBuffer;

		return tempBuffer;

	}
コード例 #2
0
ファイル: mesh.cpp プロジェクト: tsong/viewer
void Mesh::glDraw() {
    //get vertex and normal buffers
    uint numVertices;
    const float *vertexBuffer = getVertexBuffer(numVertices);
    const float *normalBuffer = getNormalBuffer(numVertices);

    //draw arrays using openGL
    glEnableClientState(GL_VERTEX_ARRAY);
    glEnableClientState(GL_NORMAL_ARRAY);
        if (vertexBuffer) glVertexPointer(3, GL_FLOAT, 0, vertexBuffer);
        if (normalBuffer) glNormalPointer(GL_FLOAT, 0, normalBuffer);
        glDrawArrays(GL_QUADS, 0, numVertices);
    glDisableClientState(GL_VERTEX_ARRAY);
    glDisableClientState(GL_NORMAL_ARRAY);
}