Пятница, 18 Июля 2025, 06:38

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
Результаты поиска
afqДата: Воскресенье, 11 Ноября 2018, 03:31 | Сообщение # 701 | Тема: SDL2 + OPENGL для Windows
Разработчик
Сейчас нет на сайте
Помогите настроить, что нужно скачать куда вписать, чтобы заработало в windows игра в связке sdl2 + opengl + [ glu ] ( glu это опционально, её не надо, но чтобы знать, то же не помешает ). В линуксе то легко всё настраивать, проблем нет, а в windows я не могу.
afqДата: Суббота, 10 Ноября 2018, 01:59 | Сообщение # 702 | Тема: Картинка исчезает когда доходит до края экрана
Разработчик
Сейчас нет на сайте
DivES,
Цитата
Если так говорить, то никогда не станешь программистом)

Ну учитывая то, что у меня нет даже образования, то я точно никогда не стану программистом.
Цитата
Так ты значит пока что сурфейсами на экран выводишь, без рендерера?

Вывожу средствами opengl.

Добавлено (10 Ноября 2018, 04:39)
---------------------------------------------
DivES, решил сделать отдельный проект, но только с текстурами, и вот проблема, я думал что текстура будет сжиматься до определенного размера, а вышло что не так. Вот может я неправильно что в коде указал, но рисуется вот так.


Установил glOrtho

Код

        glOrtho ( 0.0f, 1.0, 0.0 /*screen_height*/, 1.0 /*0.0f*/, 0.0f, 1.0f );


Также оптимизировал для текстуры код.
Код

#include "Sprite.hpp"

Sprite::Sprite ( long pos )
{
    //init_texture ( );
}

Sprite::Sprite ( )
{
}

void Sprite::free_data ( )
{
//    if ( texture ) free ( texture );
    if ( vertices ) free ( vertices );
    if ( pixels ) free ( pixels );
}
void Sprite::load ( long pos )
{
    offset = pos;
    std::FILE *fd = std::fopen ( "data", "r" );
    if ( !fd ) {
  std::perror ( "sprite load" );
  exit ( EXIT_FAILURE );
    }

    int ret;
    ret = std::fseek ( fd, pos, SEEK_SET );
    if ( ret == -1 ) {
  perror ( "fseek\n" );
    }

    ret = std::fread ( &width, sizeof ( unsigned int ), 1, fd );
    if ( ret == -1 ) {
  perror ( "width\n" );
    }
    ret = std::fread ( &height, sizeof ( unsigned int ), 1, fd );
    if ( ret == -1 ) {
  perror ( "heigth\n" );
    }
    ret = std::fread ( &max_pixels, sizeof ( unsigned int ), 1, fd );
    if ( ret == -1 ) {
  perror ( "max_pixels\n" );
    }

    pixels = new unsigned char [ max_pixels ];
    if ( !pixels ) {
  printf (" !@!\n" );
    }

    ret = std::fread ( &pixels[0] , sizeof ( unsigned char ), max_pixels, fd );
    if ( ret == -1 ) {
  perror ( "pixels\n" );
    }
    std::fclose ( fd );

    glGenTextures ( 1, &tex );
    glBindTexture ( GL_TEXTURE_2D, tex );
#if 1
    glTexParameteri ( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
        glTexParameteri ( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR );
        glTexParameteri ( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_BORDER );
        glTexParameteri ( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_BORDER );
        glTexParameteri ( GL_TEXTURE_2D, GL_TEXTURE_WRAP_R, GL_CLAMP_TO_BORDER );
#endif
//     gluBuild2DMipmaps(GL_TEXTURE_2D, GL_RGBA, width, height, GL_RGBA, GL_UNSIGNED_BYTE, pixels );

        glTexImage2D ( GL_TEXTURE_2D,
                        0,
                        GL_RGBA,
                        width,
                        height,
                        0,
                        GL_RGBA,
                        GL_UNSIGNED_BYTE,
                        pixels );
        glEnable ( GL_TEXTURE_2D );

    max_draw = height * width;
    vertices = new float [ 3 * 2 ];
    vertices[0] = 0.0f;
    vertices[1] = 0.3f;
    vertices[2] = 0.3f;
    vertices[3] = 0.0f;
    vertices[4] = 0.3f;
    vertices[5] = 0.3f;
}
void Sprite::render ( )
{
#if 1
    if ( y > 1.0 ) return;
    if ( y < -0.3 ) return;
#endif

    glBindTexture ( GL_TEXTURE_2D, tex );
    glPushMatrix ( );

#if 0
    glFrontFace ( GL_CCW );
    glEnable ( GL_CULL_FACE );
    glCullFace ( GL_BACK );
#endif

    glTranslatef ( this->x, this->y, 0 );

    glEnableClientState ( GL_VERTEX_ARRAY );
    glEnableClientState ( GL_TEXTURE_COORD_ARRAY );

    glVertexPointer ( 2, GL_FLOAT, 0, vertices );
    glTexCoordPointer ( 2, GL_FLOAT, 0, vertices );
    glDrawArrays ( GL_TRIANGLES, 0, 6 );

    glDisableClientState ( GL_VERTEX_ARRAY );
    glDisableClientState ( GL_TEXTURE_COORD_ARRAY );

//    glDisable ( GL_CULL_FACE );
//    glTranslatef ( 0, 0, -10 );

    glPopMatrix ( );

    glFlush ( );
}

int Sprite::get_width ( )
{
    return width;
}

int Sprite::get_height ( )
{
    return height;
}

int Sprite::get_x ( )
{
    return x;
}

int Sprite::get_y ( )
{
    return y;
}

void Sprite::set_pos ( int x, int y )
{
    this->x = x;
    this->y = y;
}

void Sprite::slice ( int width, int height )
{
}

int Sprite::get_max_frames ( )
{
    return max_frames;
}

Добавлено (11 Ноября 2018, 02:33)
---------------------------------------------
DivES, а, всё, разобрался.

afqДата: Пятница, 09 Ноября 2018, 22:46 | Сообщение # 703 | Тема: Картинка исчезает когда доходит до края экрана
Разработчик
Сейчас нет на сайте
DivES, у меня есть вариант кода, только без этой игры на шейдерах, но на сишке написан. Эту основу я на c++ писал, здесь я вывожу вершины с помощью glVertexPointer а цвета glColorPointer. Искажение происходит только при анимации. Такое же искажение может происходить при просмотре фильма высокого качества. Если бы я в windows это сделал, то скорее всего такого бы искажения не было бы. Вот если в nvidia настройках отключить "Sync to VBlank", то искажений нет, но картинка не так плавно движется тогда.
afqДата: Пятница, 09 Ноября 2018, 22:25 | Сообщение # 704 | Тема: Картинка исчезает когда доходит до края экрана
Разработчик
Сейчас нет на сайте
DivES, sdl2 + opengl в линуксе.

Добавлено (09 Ноября 2018, 22:27)
---------------------------------------------
DivES, да, как искажение на картинке.

afqДата: Пятница, 09 Ноября 2018, 22:00 | Сообщение # 705 | Тема: Картинка исчезает когда доходит до края экрана
Разработчик
Сейчас нет на сайте
DivES, если запихнуть все спрайты в sprites[y][x], то можно будет сразу по горизонтали 6 картинок выводить.

Добавлено (09 Ноября 2018, 22:02)
---------------------------------------------
DivES, поменял на это, так быстрее будет, чем двумерный массив.

Код

                for ( int i = 0; i < MAX_SPRITES; i++ ) {
                        s1[i].render ( );
                        s2[i].render ( );
                        s3[i].render ( );
                        s4[i].render ( );
                        s5[i].render ( );
                        s6[i].render ( );
                }

Добавлено (09 Ноября 2018, 22:19)
---------------------------------------------
DivES, на видео не видно, но без записи видно какое то искажение экрана, может ты знаешь что это?

afqДата: Пятница, 09 Ноября 2018, 21:45 | Сообщение # 706 | Тема: Картинка исчезает когда доходит до края экрана
Разработчик
Сейчас нет на сайте
DivES, у меня уже сделано так как есть, можно конечно переделать, но оно и так работает, и функции другие уже под них подстроены. Да помогло, прям в render сделал проверку на y < -256 return, и всё работает, спасибо. Но всё равно не понятно, почему, ведь логично же
Код

                      if ( s1[i].get_y() <= screen_height && s1[i].get_y() > -256 ) s1[i].render ( );

Нет ведь ошибок, почему не рисует не пойму.

Добавлено (09 Ноября 2018, 21:47)
---------------------------------------------
DivES, а у меня рендер не так устроен, а в каждом спрайте храниться рисунок. А так я как ты написал даже не подумал, спасибо.

afqДата: Пятница, 09 Ноября 2018, 19:17 | Сообщение # 707 | Тема: DELITED
Разработчик
Сейчас нет на сайте
Core, если не можешь создать игру, то делай как я. Представляй игру и играй в неё.
afqДата: Пятница, 09 Ноября 2018, 19:14 | Сообщение # 708 | Тема: Картинка исчезает когда доходит до края экрана
Разработчик
Сейчас нет на сайте
Я пока ещё текстурами не рисовал, попробую сначала такую сделать, а потом и текстурами заморочусь, когда игра будет играбельна. Вот проблема.
Код
for ( int i = 0; i < MAX_SPRITES; i++ ) {
                        //if ( ( s1[i].get_y() <= screen_height ) && ( s1[i].get_y() > -512 ) ) s1[i].render ( );
                        s1[i].render();
                }
                for ( int i = 0; i < MAX_SPRITES; i++ ) {
                        if ( s2[i].get_y() <= screen_height && s2[i].get_y() > -512 ) s2[i].render ( );
                }

Я привел фрагмент кода, в первом ряду я закоментировал строку, и написал рендерить все картинки в столбце. Второй ряд, и все остальные доходя до края экрана, то есть до y = 0 координат, картинка исчезает, хотя у меня написано, чтобы рисовалось если по y координате больше -512 ( но 512 это я замахнулся, когда подумал что может что-то не так с размером, а так надо -256 ).

Вот скрин, я убрал все остальное и оставил только картинки. По ней видно, что первый столбец рисуется, а остальные нет внизу.
afqДата: Пятница, 09 Ноября 2018, 01:19 | Сообщение # 709 | Тема: Как делают изображение одинаковым на разных разрешениях
Разработчик
Сейчас нет на сайте
Animan2010, а я тут понаделывал. Блин, я уже забыл как текстурой выводить, это значит что экран ortho выставлять в ( 1.0, 1.0 ) и тому подобное да? Так как я с текстурой как то были проблемы, я тогда незнал ещё о GL_BLEND ( о прозрачности ), и начал делать через glVertexPointer и glColorPointer. А надо блин с текстурой значит да?
afqДата: Пятница, 09 Ноября 2018, 00:24 | Сообщение # 710 | Тема: Как делают изображение одинаковым на разных разрешениях
Разработчик
Сейчас нет на сайте


Вот я например делаю игру игровой автомат, мне что, для каждого разрешения нужно отдельные картинки рисовать?
afqДата: Четверг, 08 Ноября 2018, 19:15 | Сообщение # 711 | Тема: Как наверстать забытое?
Разработчик
Сейчас нет на сайте
Пользовался unity год назад или больше, потом забросил. Щас опять взялся и ничего не помню. Как мне быстренько войти в курс дел. Какие есть сайты с документацией? Как вообще мне теперь обучаться?
afqДата: Среда, 07 Ноября 2018, 22:41 | Сообщение # 712 | Тема: Как делают изображение одинаковым на разных разрешениях
Разработчик
Сейчас нет на сайте
DivES, масштаб, вот например запусти игру while learn true, кнопки меню будут одного размера при 1024x768 и при 1920x1080.
afqДата: Среда, 07 Ноября 2018, 18:52 | Сообщение # 713 | Тема: Как делают изображение одинаковым на разных разрешениях
Разработчик
Сейчас нет на сайте
Не помню уже, создавал ли я эту тему на этом сайте. Вот например игра на unity, когда запускаешь её, она выдает окно, в котором выбираешь разрешение экрана, в котором хочешь запустить игру. Запустив игру на любом разрешении, картинка не меняется. Как это можно сделать не пойму? Для разных разрешений делать разные картинки или как то по другому?
afqДата: Вторник, 06 Ноября 2018, 20:20 | Сообщение # 714 | Тема: В файле данных вся информация
Разработчик
Сейчас нет на сайте
Я вот что подумал, щас развиваю идею, думаю так делают тоже движки ( а может и нет ), то что я задумал. Может это правильно, а может и нет. Кто что напишет. Решил создать файл данных, в нем будут находиться разрешения экранов, и для каждого разрешения свои картинки. Программа будет только считывать данные из файла и обрабатывать. Например если картинка должна быть по координатам x = 100, y = 100, то это будет в файле данных записано, а программа ( игра ) будет считывать и отображать. В таком случае, можно даже dlc добавлять в игру, не меняя кода в самой игре, главное всё предусмотреть.
afqДата: Суббота, 27 Октября 2018, 21:10 | Сообщение # 715 | Тема: Утилита для увеличения изображения
Разработчик
Сейчас нет на сайте
martuk, какой диструбутив линукса используешь? Как psd файлы читаешь? Напиши ещё что нибудь полезное. У меня сейчас kde neon стоит, я на него перешел из-за zeal, zeal в xfce большим размером показывается. Вот думаю перейти на manjaro, но стоит ли оно этого, что всё программное обеспечение будет последних версий?
afqДата: Вторник, 16 Октября 2018, 15:07 | Сообщение # 716 | Тема: Требуется 2D-художник (создание юнитов с анимацией)
Разработчик
Сейчас нет на сайте
ss87ss, если научишь меня делать такие модельки, то я может быть сделаю одну бесплатно, а может и больше. За ранее не хочу давать надежды, потому что зависить от процесса создания таких моделей.
afqДата: Понедельник, 15 Октября 2018, 21:10 | Сообщение # 717 | Тема: Ищу людей(Энтузиазм)
Разработчик
Сейчас нет на сайте
teta, так может так случиться что никто не захочет в команде быть и ты просто так дома несколько лет просидишь.
afqДата: Суббота, 13 Октября 2018, 10:15 | Сообщение # 718 | Тема: Утилита для увеличения изображения
Разработчик
Сейчас нет на сайте
martuk, я тут учу php, хочу заняться веб разработкой и у меня вопрос, а где я могу посмотреть как делаются сайты? Например сам язык я выучу, но как правильно писать на нем сайты я не знаю.
afqДата: Понедельник, 27 Августа 2018, 10:20 | Сообщение # 719 | Тема: Утилита для увеличения изображения
Разработчик
Сейчас нет на сайте
martuk, ну и правильно. Вот даже одна из причин почему не стоит пользоваться windows, оказывается что даже у windows 10 есть свои версии, и у этих версий свой срок жизни. То есть купив один раз windows 10, придётся купить потом ещё раз её же.

Добавлено (27 Августа 2018, 10:33)
---------------------------------------------
martuk, а что мне в линуксе больше всего нравиться чем в windows, так это консоль, терминал.

afqДата: Понедельник, 27 Августа 2018, 09:09 | Сообщение # 720 | Тема: Утилита для увеличения изображения
Разработчик
Сейчас нет на сайте
drcrack,
Цитата
В чем преимущества перед imagemagick?

Незнаю. Я ещё сделал нарезку картинок, тоже на github оставил. Visual Studio есть для линукс, только он не такой как для windows, а windows версию не пробывал устанавливать. Да vim использую. Вот сделал себе аватара, только надо сделать другого, как будто пишет что-то на клаве. Сделал в рисунке на 45x45, и увеличил на 4, потом разрезал spritesheet на отдельные рисунки и сконвертировал в gif
Код
convert *.png avatar.gif
.
Поиск:

Все права сохранены. GcUp.ru © 2008-2025 Рейтинг