Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++,OpenGL]Mapa Kafelkowa w 3d i 2d

Ostatnio zmodyfikowano 2012-10-06 18:12
Autor Wiadomość
LimaSxD
Temat założony przez niniejszego użytkownika
[C++,OpenGL]Mapa Kafelkowa w 3d i 2d
» 2012-10-06 00:44:11
Od 2 dni kombinuje szukam i męczę się ze stworzeniem mapy kafelkowej w trójwymiarze i wyrysowaniu jej. Zawsze kiedy zrobię tablice w trójwymiarze i ją wyrysuje wychodzi coś jak schodki dziwne kształty które nie przypominają tego co wpisałem do tablicy. W tablicy dwuwymiarowej i wyrysowaniu jej chciałem stworzyć zwykłą platformę (2,2)
Coś takiego :
11
11
--------------------
A wychodziło coś takiego :
00
01
10
11
--------------------
Nie rozumiem dlaczego tak się dzieje proszę o pomoc.
P-66143
DejaVu
» 2012-10-06 00:50:47
Proszę zapoznać się z tematem http://cpp0x.pl/forum/temat/?id=8389 :) dwie godziny temu ktoś inny ten sam temat rozpoczął co Ty :P
P-66144
LimaSxD
Temat założony przez niniejszego użytkownika
» 2012-10-06 14:58:21
Nie pomógł mi jakoś tamten temat. Czy ma ktoś jakiś pomysł jak to rozwiązać.
P-66153
Gabes
» 2012-10-06 15:26:30
P-66156
LimaSxD
Temat założony przez niniejszego użytkownika
» 2012-10-06 15:39:32
Chodziło mi o to że rysuje mi coś takiego SS:
http://img834.imageshack.us/img834/6783/beztytuuqwm.png

A moja tablica wygląda tak:

C/C++
int map_one[ 2 ][ 2 ] =
{
    1, 1,
    1, 1
};

Nawet w konsoli mi wypisuje inaczej tablice niż jest zrobiona.
Help.
P-66159
SeaMonster131
» 2012-10-06 15:41:01
Pokaż w jaki sposób ją rysujesz.
P-66161
LimaSxD
Temat założony przez niniejszego użytkownika
» 2012-10-06 15:43:40
Tak rysuje mapę (to jest trochę przebudowany kod z lekcji OpenGL w kursach)

C/C++
for( int y = 0; y < 2; y++ )
{
    for( int x = 0; x < 2; x++ )
    {
        if( map_one[ x ][ y ] == 1 )
        {
            glColor4fv( Magenta );
            glTranslatef( x, y, 0 );
            glutSolidCube( 1 );
        }
        std::cout << x;
        std::cout << y << std::endl;
    }
}
P-66163
Gabes
» 2012-10-06 17:59:43
Być może wystarczyłoby dodać u ciebie jedną linie.
glPushMatrix();
Ale wrzucę cały krótki kod:
C/C++
#include <GL/glut.h>
int Map[ 10 ][ 12 ] = {
    { 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1 },
    { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
    { 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1 },
    { 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1 },
    { 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1 },
    { 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1 },
    { 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 1 },
    { 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1 },
    { 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 1 },
    { 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 } };
void drawCube( void )
{
    //glRotatef( 20,0,1,0);
    glRotatef( - 20, 1, 0, 0 );
    glRotatef( - 10, 0, 0, 1 );
    for( int y = 0; y < 10; y++ )
    {
        for( int x = 0; x < 12; x++ )
        {
            if( Map[ y ][ x ] == 1 )
            {
                glPushMatrix();
                //glColor4fv( Magenta );
                glColor4f( 1, 0, 1, 0 );
                glTranslatef( x, - y, 0 );
                glutSolidCube( 1 );
            }
            glPopMatrix();
        }
    }
}
void display( void )
{
    glClearColor( 0.0, 0.0, 0.0, 1.0 );
    glClear( GL_COLOR_BUFFER_BIT );
    glLoadIdentity();
    glEnable( GL_TEXTURE_2D );
    glTranslatef( - 5, 6, - 15 );
    drawCube();
    glutSwapBuffers();
}
void reshape( int w, int h )
{
    glViewport( 0, 0,( GLsizei ) w,( GLsizei ) h );
    glMatrixMode( GL_PROJECTION );
    glLoadIdentity();
    gluPerspective( 60,( GLfloat ) w /( GLfloat ) h, 1.0, 100.0 );
    glMatrixMode( GL_MODELVIEW );
}
int main( int argc, char ** argv )
{
    glutInit( & argc, argv );
    glutInitDisplayMode( GLUT_DOUBLE );
    glutInitWindowSize( 800, 600 );
    glutInitWindowPosition( 0, 0 );
    glutCreateWindow( "OpenGL" );
    glutDisplayFunc( display );
    glutIdleFunc( display );
    glutReshapeFunc( reshape );
    glutMainLoop();
    return 0;
}
P-66181
« 1 » 2
  Strona 1 z 2 Następna strona