Модераторы: Rickert, Alexeis, BorisVorontsov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Текстура на все сферы 
V
    Опции темы
Shade2015
Дата 26.4.2015, 14:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 26.4.2015

Репутация: нет
Всего: нет



Народ, нужна помощь))Пытаюсь наложить текстуру на все планеты-сферы, плюс использовать текстуру как фон...
норм работало, когда текстура была фоном, планеты просто окрашивались цветом...
Сейчас "летает" одинокая планета(т.е. закрашивается только последняя планета), закрашенная текстурой, и все... остальное исчезло(((
Что делаю не так??? 
PS Новичок, пытаюсь написать курсач(((
 
Код

#include <windows.h>
#include <gl\gl.h>
#include <glut.h>
#include <list>
#include <math.h>
#pragma comment(lib, "GLAUX.lib") 

#include "glaux.h"
//макросы
 
#define RAD_IN_DEG 0.017453292519943295769
 
//глобальные переменные

static float segments_count = 50; //кол-во сегментов
static float t; //время [с]
static int dt = 10; //интервал пересчета [мс]
static GLint width = 600; //ширина экрана
static GLint height = 600; //высота экрана
static float t_factor = 1.0; //соотношение время модели / время пользователя
static float x_factor = 10.0 / 600.0; //соотношение единица модели / точка экрана
 static bool EnableTextureFlag = false;
//классы
 unsigned int photo_tex;
 unsigned int texture;

 unsigned int tex1;
 unsigned int tex2;
AUX_RGBImageRec* photo_image;
AUX_RGBImageRec* photo1;
AUX_RGBImageRec* photo2;

class ring_t
{
public:
    float r, g, b; //цвет
 
    float inner_radius, outer_radius; //внутренний и внешний радиусы
    float az, ax; //углы поворота кольца относительно осей z, x (исходная позиция - в плоскости xy) [град]
 
    ring_t(float r, float g, float b, float inner_radius, float outer_radius, float az, float ax):
        r(r), g(g), b(b), inner_radius(inner_radius), outer_radius(outer_radius), az(az), ax(ax)
    {}
 
    void render(void)
    {
        glPushMatrix();
 
        glRotatef(az, 0, 0, 1);
        glRotatef(ax, 1, 0, 0);
 
        GLUquadricObj *qu = gluNewQuadric();
        gluQuadricTexture(qu, GL_TRUE);
        gluQuadricDrawStyle(qu, GLU_FILL);
        glColor3f(r, g, b);
        gluDisk(qu, inner_radius, outer_radius, segments_count, segments_count);
        gluDeleteQuadric(qu);
 
        glPopMatrix();
    }
};
 
class planet_t;
static planet_t *core;
 
class planet_t
{
public:
     //цвет
    unsigned int texture;
    float planet_radius; //радиус планеты
    float orbit_radius; //радиус орбиты (окружность)
    float az, ax; //углы поворота орбиты относительно осей z, x (исходная позиция - в плоскости xy) [град]
    float T; //период обращения [с]
    float dT; //смещение [с]
 
    std::list<ring_t> rings; //кольца
    std::list<planet_t> sats; //спутники
 
    planet_t(unsigned int texture, float planet_radius, float orbit_radius, float az, float ax, float T, float dT):
        texture(texture), planet_radius(planet_radius), orbit_radius(orbit_radius), az(az), ax(ax), T(T), dT(dT)
    {}
 

    void render(const float t)
    {
        glPushMatrix();
 
        glRotatef(az, 0, 0, 1);
        glRotatef(ax, 1, 0, 0);
 
        if (orbit_radius > 0)
        {
            float tmp = t + dT; //время с учетом смещения
            int n = tmp / T; //кол-во оборотов
            tmp -= n * T; //время от начала оборота
            tmp *= 360.0 / T; //угол
 
            glTranslatef(orbit_radius * cos(tmp * RAD_IN_DEG),0,orbit_radius * sin(tmp * RAD_IN_DEG));
        }
 
        if (this == core)
        {
            float p0[4] = {0, 0, 1, 0};
            glLightfv(GL_LIGHT0, GL_POSITION, p0);
 
            render_planet();
 
            float p1[4] = {0, 0, 0, 1};
            glLightfv(GL_LIGHT0, GL_POSITION, p1);
        }
        else
        {
            render_planet();
        }
 
        render_rings_and_sats(t);
 
        glPopMatrix();
    }
 
    void render_planet(void)
    {
        GLUquadricObj *q = gluNewQuadric();
        glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
        
  
  glEnable( GL_TEXTURE_2D );
  

        gluQuadricTexture(q, GL_TRUE);
        gluQuadricDrawStyle(q, GLU_FILL);
        
glColor3d(1,1,1);
glPushMatrix();
glBindTexture(GL_TEXTURE_2D, texture);
gluSphere(q,  planet_radius, segments_count, segments_count);
glPopMatrix();

}
    void render_rings_and_sats(const float t)
    {
        for
        (
            std::list<ring_t>::iterator i = rings.begin();
            i != rings.end();
            i++
        )
            i->render();
 
        for
        (
            std::list<planet_t>::iterator i = sats.begin();
            i != sats.end();
            i++
        )
            i->render(t);
    }
};
 
//GL-функции
 
static void Display(void)
{
    glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT);
 
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();

 glEnable(GL_TEXTURE_2D);
 
 glBindTexture(GL_TEXTURE_2D, photo_tex);
   glBegin(GL_QUADS);
     glTexCoord2d(0,0); glVertex2d(-9,-9);
     glTexCoord2d(0,1); glVertex2d(-9, 9);
     glTexCoord2d(1,1); glVertex2d( 9, 9);
     glTexCoord2d(1,0); glVertex2d( 9,-9);
 glEnd();
 glDisable(GL_TEXTURE_2D);

    core->render(t * t_factor);
 
    glFlush();
    glutSwapBuffers();
}
 
static void Reshape(GLint width, GLint height)
{
    ::width = width;
    ::height = height;
 
    glViewport(0, 0, width, height);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glOrtho(-width / 2 * x_factor, width / 2 * x_factor, -height / 2 * x_factor, height / 2 * x_factor, 0, 100);
    gluLookAt(0, 0, 5, 0, 0, 0, 0, 1, 0);
}
 
static void Timer(int value)
{
    t += dt / 1000.0;
 
    glutPostRedisplay();
    glutTimerFunc(dt, Timer, 0);
}
 
int main(int argc, char *argv[])
{
    glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE);
    glutInitWindowSize(width, height);
    glutCreateWindow("planet system");
 
    glEnable(GL_DEPTH_TEST);
    glEnable(GL_LIGHT0);
    glEnable(GL_LIGHTING);
    glEnable(GL_COLOR_MATERIAL);

  photo_image = auxDIBImageLoad("fon.bmp");
glGenTextures(1, &photo_tex);
glBindTexture(GL_TEXTURE_2D, photo_tex);
glTexImage2D(GL_TEXTURE_2D, 0, 4,
             photo_image->sizeX,
             photo_image->sizeY,
             0, GL_RGB, GL_UNSIGNED_BYTE,
             photo_image->data);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
    
photo1=auxDIBImageLoad("sun.bmp");
glGenTextures(1, &tex1);
glBindTexture(GL_TEXTURE_2D, tex1);
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
glTexImage2D(GL_TEXTURE_2D, 0, 3,
                 photo1->sizeX,
                 photo1->sizeY,
                 0, GL_RGB, GL_UNSIGNED_BYTE,
                 photo1->data);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);

    photo2=auxDIBImageLoad("ground.bmp");
glGenTextures(1, &tex2);
glBindTexture(GL_TEXTURE_2D, tex2);
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
glTexImage2D(GL_TEXTURE_2D, 0, 3,
                 photo2->sizeX,
                 photo2->sizeY,
                 0, GL_RGB, GL_UNSIGNED_BYTE,
                 photo2->data);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
    
    planet_t core(texture, 1, -1, 0, 0, 0, 0);
    ::core = &core;
    
  
   core.sats.push_back(planet_t(tex2, 0.1, 2, 0, 0, 5, 0));
    core.sats.push_back(planet_t(tex2, 0.2, 2.5, 0, 0, 10, 0));
    core.sats.back().sats.push_back(planet_t(tex1, 0.05, 0.3, 0, 0, 5, 0));
    core.sats.push_back(planet_t(tex2, 0.2, 3, 0, 0, 15, 0));

    core.sats.push_back(planet_t(tex2, 0.5, 4, 0, 0, 20, 0));
    core.sats.back().rings.push_back(ring_t(1, 1, 1, 0.7, 0.8, 0, 80));
    core.sats.back().rings.push_back(ring_t(1, 1, 1, 0.85, 0.9, 0, 80));
    core.sats.back().rings.push_back(ring_t(1, 1, 1, 0.95, 1, 0, 80));


    glutDisplayFunc(Display);
    glutReshapeFunc(Reshape);
    glutTimerFunc(dt, Timer, 0);
    glutMainLoop();
 
    return 0;
}


!!!исправила функцию, где рисую сферу, добавила glutSwapBuffers();
НО! появилась новая проблема((Отображаются все планеты, но текстура у них, которая используется для фона...и она как-то беспорядочно "мигает"(((как исправить?
Код

   void render_planet(void)
    {
        GLUquadricObj *q = gluNewQuadric();
        glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
      glEnable(GL_TEXTURE_2D);
       gluQuadricTexture(q, GL_TRUE);
        gluQuadricDrawStyle(q, GLU_FILL);
        glColor3d(1,1,1);
        glPushMatrix();
        gluSphere(q,  planet_radius, segments_count, segments_count);
glPopMatrix();
gluDeleteQuadric(q);  
glutSwapBuffers();    
}



Это сообщение отредактировал(а) Shade2015 - 26.4.2015, 18:17
PM MAIL   Вверх
Vetos
Дата 26.4.2015, 23:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 312
Регистрация: 4.4.2005

Репутация: 3
Всего: 4



Очень тяжело разобраться в коде когда не знаешь поставленной задачи, в чем конкретно она состоит?, зависит ли то в какой среде будет это сделано?(Я бы мог помочь, сделав это в Qt). Интересует что вообще должна делать программа, пожалуйсто поясни задачу! 
      Если это не жизненно важный Проект, прикрепи исходный код. OpenGL моя маленькая слабость, с радостью помогу, но если буду знать конкретно что должна делать программа! 

Это сообщение отредактировал(а) Vetos - 26.4.2015, 23:09


--------------------
Строить нужно так, чтоб никто не сломал!
А ломать, чтоб никто не знал 8) :ne_huliganit 
PM MAIL ICQ   Вверх
tzirechnoy
Дата 27.4.2015, 13:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1173
Регистрация: 30.1.2009

Репутация: 1
Всего: 16



На самом деле, представлен код вполне нормально (ну, у меня не винда, потому пару мелочей сменил -- выкинул (ненужный пока) windows.h, сделал в #include нормальные слэшы и правильный регистр у слова GL, и GLAUX сменил на SOIL) -- но оно собирается и работает так, как описано.


А, ну да: void render_planet( ...
 glClear()

Ну, логично.


PM MAIL   Вверх
Shade2015
Дата 27.4.2015, 14:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 26.4.2015

Репутация: нет
Всего: нет



Пишу курсовую...хочу в своем проекте показать модель солнечной системы(с текстурами, как на самих планетах, так и хотела использовать текстуру как фон(типа космос),с освещением и  анимацией, вращение самих планет вокруг солнца-оно норм работает, ну и позже хотела реализовать поворот самой системы с помощью мыши,чтобы ее рассматривать с разных ракурсов). Вот....но проблема с этими текстурами

С QT Creator дружу smile

Добавлено через 2 минуты и 51 секунду
Цитата(tzirechnoy @ 27.4.2015,  13:26)

А, ну да: void render_planet( ...
 glClear()

Ну, логично.

То есть? проблема в void render_planet( ...
 glClear()   ????

Добавлено через 7 минут и 48 секунд
Код

#include <windows.h>
#include <gl\gl.h>
#include <glut.h>
#include <list>
#include <math.h>
#pragma comment(lib, "GLAUX.lib") 

#include "glaux.h"
//макросы
 
#define RAD_IN_DEG 0.017453292519943295769
 
//глобальные переменные

static float segments_count = 50; //кол-во сегментов
static float t; //время [с]
static int dt = 10; //интервал пересчета [мс]
static GLint width = 600; //ширина экрана
static GLint height = 600; //высота экрана
static float t_factor = 1.0; //соотношение время модели / время пользователя
static float x_factor = 10.0 / 600.0; //соотношение единица модели / точка экрана
 static bool EnableTextureFlag = false;
//классы
unsigned int photo_tex;
 unsigned int texture;
 unsigned int tex1;
 unsigned int tex2;
AUX_RGBImageRec* photo_image;
AUX_RGBImageRec* photo1;
AUX_RGBImageRec* photo2;





class ring_t
{
public:
    float r, g, b; //цвет
 
    float inner_radius, outer_radius; //внутренний и внешний радиусы
    float az, ax; //углы поворота кольца относительно осей z, x (исходная позиция - в плоскости xy) [град]
 
    ring_t(float r, float g, float b, float inner_radius, float outer_radius, float az, float ax):
        r(r), g(g), b(b), inner_radius(inner_radius), outer_radius(outer_radius), az(az), ax(ax)
    {}
 
    void render(void)
    {
        glPushMatrix();
 
        glRotatef(az, 0, 0, 1);
        glRotatef(ax, 1, 0, 0);
 
        GLUquadricObj *qu = gluNewQuadric();
        gluQuadricTexture(qu, GL_TRUE);
        gluQuadricDrawStyle(qu, GLU_FILL);
        glColor3f(r, g, b);
        gluDisk(qu, inner_radius, outer_radius, segments_count, segments_count);
        gluDeleteQuadric(qu);
 
        glPopMatrix();
        glutSwapBuffers();
    }
};
 
class planet_t;
static planet_t *core;
 
class planet_t
{
public:
     //цвет
    unsigned int texture;
    float planet_radius; //радиус планеты
    float orbit_radius; //радиус орбиты (окружность)
    float az, ax; //углы поворота орбиты относительно осей z, x (исходная позиция - в плоскости xy) [град]
    float T; //период обращения [с]
    float dT; //смещение [с]
 
    std::list<ring_t> rings; //кольца
    std::list<planet_t> sats; //спутники
 
    planet_t(  unsigned int texture, float planet_radius, float orbit_radius, float az, float ax, float T, float dT):
        texture(texture), planet_radius(planet_radius), orbit_radius(orbit_radius), az(az), ax(ax), T(T), dT(dT)
    {}
 

    void render(const float t)
    {
        glPushMatrix();
 
        glRotatef(az, 0, 0, 1);
        glRotatef(ax, 1, 0, 0);
 
        if (orbit_radius > 0)
        {
            float tmp = t + dT; //время с учетом смещения
            int n = tmp / T; //кол-во оборотов
            tmp -= n * T; //время от начала оборота
            tmp *= 360.0 / T; //угол
 
            glTranslatef(orbit_radius * cos(tmp * RAD_IN_DEG),0,orbit_radius * sin(tmp * RAD_IN_DEG));
        }
 
        if (this == core)
        {
            float p0[4] = {0, 0, 1, 0};
            glLightfv(GL_LIGHT0, GL_POSITION, p0);
            render_planet();
            float p1[4] = {0, 0, 0, 1};
            glLightfv(GL_LIGHT0, GL_POSITION, p1);
        }
        else
        {
            render_planet();
        }
 
        render_rings_and_sats(t);
        glPopMatrix();
        
        glFlush();
    }
 
    void render_planet(void)
    {glPushMatrix();
        GLUquadricObj *q = gluNewQuadric();
        glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
        
      glEnable(GL_TEXTURE_2D);
       gluQuadricTexture(q, GL_TRUE);
        gluQuadricDrawStyle(q, GLU_FILL);
    
        glBindTexture(GL_TEXTURE_2D, texture);
        gluSphere(q,  planet_radius, segments_count, segments_count);

gluDeleteQuadric(q);  
glPopMatrix();
glutSwapBuffers();
}

    void render_rings_and_sats(const float t)
    {
        for
        (
            std::list<ring_t>::iterator i = rings.begin();
            i != rings.end();
            i++
        )
            i->render();
 
        for
        (
            std::list<planet_t>::iterator i = sats.begin();
            i != sats.end();
            i++
        )
            i->render(t);
            
    }
};
 
//GL-функции

static void  Display(void)

 glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT);
 glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
 glEnable(GL_TEXTURE_2D);
 glBindTexture(GL_TEXTURE_2D, photo_tex);
   glBegin(GL_QUADS);
     glTexCoord2d(0,0); glVertex2d(-9,-9);
     glTexCoord2d(0,1); glVertex2d(-9, 9);
     glTexCoord2d(1,1); glVertex2d( 9, 9);
     glTexCoord2d(1,0); glVertex2d( 9,-9);
 glEnd();
 glDisable(GL_TEXTURE_2D);
 core->render(t * t_factor);
 glFlush();
 glutSwapBuffers();
}
 

static void Reshape(GLint width, GLint height)
{
    ::width = width;
    ::height = height;
 
    glViewport(0, 0, width, height);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glOrtho(-width / 2 * x_factor, width / 2 * x_factor, -height / 2 * x_factor, height / 2 * x_factor, 0, 100);
    gluLookAt(0, 0, 5, 0, 0, 0, 0, 1, 0);
    glMatrixMode( GL_MODELVIEW );
}
 
static void Timer(int value)
{
    t += dt / 1000.0;
 
    glutPostRedisplay();
    glutTimerFunc(dt, Timer, 0);
}

int main(int argc, char *argv[])
{
    glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE);
    glutInitWindowSize(width, height);
    glutCreateWindow("planet system");
    glutDisplayFunc(Display);
    glutReshapeFunc(Reshape);
    glEnable(GL_DEPTH_TEST);
    glEnable(GL_LIGHT0);
    glEnable(GL_LIGHTING);
    glEnable(GL_COLOR_MATERIAL);

photo_image = auxDIBImageLoad("fon.bmp");
glGenTextures(1, &photo_tex);
glBindTexture(GL_TEXTURE_2D, photo_tex);

glTexImage2D(GL_TEXTURE_2D, 0, 4,
             photo_image->sizeX,
             photo_image->sizeY,
             0, GL_RGB, GL_UNSIGNED_BYTE,
             photo_image->data);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
        

    

 photo2=auxDIBImageLoad("sun.bmp");
glGenTextures(1, &tex2);
glBindTexture(GL_TEXTURE_2D, tex2);
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
glTexImage2D(GL_TEXTURE_2D, 0, 3,
                 photo2->sizeX,
                 photo2->sizeY,
                 0, GL_RGB, GL_UNSIGNED_BYTE,
                 photo2->data);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);

   photo1=auxDIBImageLoad("ground.bmp");
glGenTextures(1, &tex1);
glBindTexture(GL_TEXTURE_2D, tex1);
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
glTexImage2D(GL_TEXTURE_2D, 0, 3,
                 photo1->sizeX,
                 photo1->sizeY,
                 0, GL_RGB, GL_UNSIGNED_BYTE,
                 photo1->data);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);

    
   
    planet_t core(texture, 1, -1, 0, 0, 0, 0);
    ::core = &core;
    
  
   core.sats.push_back(planet_t(tex1, 0.1, 2, 0, 0, 5, 0));
    core.sats.push_back(planet_t(tex1, 0.2, 2.5, 0, 0, 10, 0));
    core.sats.push_back(planet_t(tex1, 0.2, 3, 0, 0, 15, 0));
core.sats.back().sats.push_back(planet_t(tex2, 0.05, 0.3, 0, 0, 5, 0));
    core.sats.push_back(planet_t(tex1, 0.5, 4, 0, 0, 20, 0));
    core.sats.back().rings.push_back(ring_t(1, 1, 1, 0.7, 0.8, 0, 80));
    core.sats.back().rings.push_back(ring_t(1, 1, 1, 0.85, 0.9, 0, 80));
    core.sats.back().rings.push_back(ring_t(1, 1, 1, 0.95, 1, 0, 80));
   
glutTimerFunc(dt, Timer, 0);
glutMainLoop();
   
 
    return 0;
}


Вот что есть, практически ничего не изменилось))))

Это сообщение отредактировал(а) Shade2015 - 27.4.2015, 14:58
PM MAIL   Вверх
tzirechnoy
Дата 27.4.2015, 15:39 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1173
Регистрация: 30.1.2009

Репутация: 1
Всего: 16



Цитата
То есть? проблема в void render_planet( ...  glClear()   ????


Ну да. glClear, ВНЕЗАПНО, очищает рисовательный буфер, чорным цветом. Перед рисованием каждой следующей планеты. Дальшэ продолжать, или сами догадались?
PM MAIL   Вверх
Shade2015
Дата 27.4.2015, 16:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 26.4.2015

Репутация: нет
Всего: нет



Аааа...
 smile 
ну да, спасибо большое, работает

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Вы можете найти полезным что...
Alexeis
Rickert
  • Английская документация по DirectX лежит где-то здесь.
  • Английская документация по OpenGL лежит где-то там.
  • Гейм-дев у нас обсуждают где-то тут

Ждём вас! С уважением, Alexeis, Rickert.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Мультимедия, OpenGL/DirectX | Следующая тема »


 




[ Время генерации скрипта: 0.1382 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.