Example #1
0
void inciarlizar_motor_render(float m_viewWidth, float m_viewHeight){

    glClearColor(0.1f, 0.2f, 0.0f, 1.0f);
    
    glUseProgram(_program);
    
    
    _shd_posicion = getParametro( "position");
    _shd_normal    = getParametro( "normal");
    _shd_textura  = getParametro("textura_cord");
    _shd_mvp      = getUniform( "MVP");
    _shd_text     = getUniform("textura");
    
    // Enable depth test
    glEnable(GL_DEPTH_TEST);
    glDepthFunc(GL_LESS);

    /*
        Perspectiva
     */
    mtxLoadPerspective(mPerspectiva, 45, (float)m_viewWidth / (float)m_viewHeight,1.0,10000);
    mtxLoadIdentity(mModelo);
    
    
    /*
        Camara
     4.0f, 3.0f, 3.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f)
     */
    
    
    
    float vecEye[3] = {2.0f, 0.0f, 3.0f};
    float vecCentro[3] = {0.0, 0.0, 0.0};
    float vecUp[3] = {0.0, 1.0, 0.0};
    
    mtxLookAt(mModeloCamara, vecEye, vecCentro, vecUp);
    
    
    
    //colocamos el modelo en las cordenadas 0.0f en la x,y,z
	mtxTranslateApply(mModelo, 0.0f, 0.0f, 0.0f);

    
    crear_buffers();
    
    long witdh = 0.0f, height = 0.0f;
    textura_id = load_texture_TGA(PATH_TEXTURA, &witdh, &height, GL_REPEAT, GL_REPEAT);
    glActiveTexture(GL_TEXTURE0);
    glBindTexture(GL_TEXTURE_2D, textura_id);
    glUseProgram(0);
    
}
Example #2
0
void mtxRotateMatrix(float *mtx, float rad, float xAxis, float yAxis, float zAxis) {
    if (yAxis == 0.0f && zAxis == 0.0f) {
        mtxRotateXMatrix(mtx, rad);
    } else if(xAxis == 0.0f && zAxis == 0.0f) {
        mtxRotateYMatrix(mtx, rad);
    } else if(xAxis == 0.0f && yAxis == 0.0f) {
        mtxRotateZMatrix(mtx, rad);
    } else {
        float rotMtx[16];
#if !defined(USE_ORIGINAL_BUGGY_IMPLEMENTATION)
#warning fixed a use of garbage stack memory, but unsure of algorithm ... need testing =)
        mtxLoadIdentity(rotMtx);
#endif
        mtxLoadRotate(rotMtx, rad, xAxis, yAxis, zAxis);
        mtxMultiply(mtx, rotMtx, mtx);
    }
}
Example #3
0
void update(){
    rot+=0.1f;
    
    glUseProgram(_program);
    
    mtxRotateApply(mModelo, 1.0f, 0.1f, 0.1f, 0.0f);
    
    float mMV[16];
    mtxLoadIdentity(mMV);
    
    mtxMultiply(mMV, mModeloCamara, mModelo);

	mtxMultiply(mMVP, mPerspectiva, mMV);
    
    glUniformMatrix4fv(_shd_mvp, 1, GL_FALSE, mMVP);
    
    glUseProgram(0);

}
Example #4
0
void mtxInvert(float *mtx, const float *src) {
    float tmp[16];
    float val, val2, val_inv;
    int i, j, i4, i8, i12, ind;

    mtxTranspose(tmp, src);
    mtxLoadIdentity(mtx);

    for (i = 0; i != 4; i++) {
        val = tmp[(i << 2) + i];
        ind = i;

        i4  = i + 4;
        i8  = i + 8;
        i12 = i + 12;

        for (j = i + 1; j != 4; j++) {
            if (fabsf(tmp[(i << 2) + j]) > fabsf(val)) {
                ind = j;
                val = tmp[(i << 2) + j];
            }
        }

        if (ind != i) {
            val2      = mtx[i];
            mtx[i]    = mtx[ind];
            mtx[ind]  = val2;

            val2      = tmp[i];
            tmp[i]    = tmp[ind];
            tmp[ind]  = val2;

            ind += 4;

            val2      = mtx[i4];
            mtx[i4]   = mtx[ind];
            mtx[ind]  = val2;

            val2      = tmp[i4];
            tmp[i4]   = tmp[ind];
            tmp[ind]  = val2;

            ind += 4;

            val2      = mtx[i8];
            mtx[i8]   = mtx[ind];
            mtx[ind]  = val2;

            val2      = tmp[i8];
            tmp[i8]   = tmp[ind];
            tmp[ind]  = val2;

            ind += 4;

            val2      = mtx[i12];
            mtx[i12]  = mtx[ind];
            mtx[ind]  = val2;

            val2      = tmp[i12];
            tmp[i12]  = tmp[ind];
            tmp[ind]  = val2;
        }

        if (val == 0) {
            mtxLoadIdentity(mtx);
            return;
        }

        val_inv = 1.0f / val;

        tmp[i]   *= val_inv;
        mtx[i]   *= val_inv;

        tmp[i4]  *= val_inv;
        mtx[i4]  *= val_inv;

        tmp[i8]  *= val_inv;
        mtx[i8]  *= val_inv;

        tmp[i12] *= val_inv;
        mtx[i12] *= val_inv;

        if (i != 0) {
            val = tmp[i << 2];

            tmp[0]  -= tmp[i]   * val;
            mtx[0]  -= mtx[i]   * val;

            tmp[4]  -= tmp[i4]  * val;
            mtx[4]  -= mtx[i4]  * val;

            tmp[8]  -= tmp[i8]  * val;
            mtx[8]  -= mtx[i8]  * val;

            tmp[12] -= tmp[i12] * val;
            mtx[12] -= mtx[i12] * val;
        }

        if (i != 1) {
            val = tmp[(i << 2) + 1];

            tmp[1]  -= tmp[i]   * val;
            mtx[1]  -= mtx[i]   * val;

            tmp[5]  -= tmp[i4]  * val;
            mtx[5]  -= mtx[i4]  * val;

            tmp[9]  -= tmp[i8]  * val;
            mtx[9]  -= mtx[i8]  * val;

            tmp[13] -= tmp[i12] * val;
            mtx[13] -= mtx[i12] * val;
        }

        if (i != 2) {
            val = tmp[(i << 2) + 2];

            tmp[2]  -= tmp[i]   * val;
            mtx[2]  -= mtx[i]   * val;

            tmp[6]  -= tmp[i4]  * val;
            mtx[6]  -= mtx[i4]  * val;

            tmp[10] -= tmp[i8]  * val;
            mtx[10] -= mtx[i8]  * val;

            tmp[14] -= tmp[i12] * val;
            mtx[14] -= mtx[i12] * val;
        }

        if (i != 3) {
            val = tmp[(i << 2) + 3];

            tmp[3]  -= tmp[i]   * val;
            mtx[3]  -= mtx[i]   * val;

            tmp[7]  -= tmp[i4]  * val;
            mtx[7]  -= mtx[i4]  * val;

            tmp[11] -= tmp[i8]  * val;
            mtx[11] -= mtx[i8]  * val;

            tmp[15] -= tmp[i12] * val;
            mtx[15] -= mtx[i12] * val;
        }
    }
}