Example #1
0
void Board::drawWall(double x, double y, int parts, bool withTexture, GLuint texture,
        double textureFactor, bool inverseTexture,Vector3d normal) {

    double textureChange = 0;

    double xChange = x / parts;
    double yChange = y / parts;

    if (withTexture) {
        textureChange = textureFactor / parts;
        glEnable(GL_TEXTURE_2D);
        glBindTexture(GL_TEXTURE_2D, texture);
    }

    glPushMatrix();
    {
        glNormal3d(normal.getValueAt(X),normal.getValueAt(Y),normal.getValueAt(Z));
        glBegin(GL_QUADS);
        {
            for (int j = 0; j < parts; j++) {
                for (int i = 0; i < parts; i++) {
                    if (withTexture) {
                        if (inverseTexture) glTexCoord2f((j) * textureChange, i * textureChange);
                        else glTexCoord2f((i) * textureChange, j * textureChange);
                    }
                    glVertex3f((i) * xChange, 0.0, j * yChange);
                    if (withTexture) {
                        if (inverseTexture) glTexCoord2f((j + 1) * textureChange, (i) * textureChange);
                        else glTexCoord2f((i) * textureChange, (j + 1) * textureChange);
                    }
                    glVertex3f((i) * xChange, 0.0, (j + 1) * yChange);
                    if (withTexture) {
                        if (inverseTexture) glTexCoord2f((j + 1) * textureChange, (i + 1) * textureChange);
                        else glTexCoord2f((i + 1) * textureChange, (j + 1) * textureChange);
                    }
                    glVertex3f((i + 1) * xChange, 0.0, (j + 1) * yChange);
                    if (withTexture) {
                        if (inverseTexture) glTexCoord2f((j) * textureChange, (i + 1) * textureChange);
                        else glTexCoord2f((i + 1) * textureChange, (j) * textureChange);
                    }
                    glVertex3f((i + 1) * xChange, 0.0, (j) * yChange);
                }
            }
        }
        glEnd();
    }
    glPopMatrix();

    if (withTexture) glDisable(GL_TEXTURE_2D);
}