Пятница, 26 Апреля 2024, 08:00

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

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


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

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

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

Незнаю. Я ещё сделал нарезку картинок, тоже на github оставил. Visual Studio есть для линукс, только он не такой как для windows, а windows версию не пробывал устанавливать. Да vim использую. Вот сделал себе аватара, только надо сделать другого, как будто пишет что-то на клаве. Сделал в рисунке на 45x45, и увеличил на 4, потом разрезал spritesheet на отдельные рисунки и сконвертировал в gif
Код
convert *.png avatar.gif
.
afqДата: Воскресенье, 19 Августа 2018, 11:17 | Сообщение # 713 | Тема: Утилита для увеличения изображения
Разработчик
Сейчас нет на сайте
martuk, к сожеланию вот так нельзя
Код

img/*.png

Но в линуксе же программируемая консоль, поэтому можно вот так написать, и все файлы обработаются
Код

for file in *.png
do
  a=$(basename "$file" .png);
  b=$(echo "$a""_new.png");
  echo "$b";
done


Ну а так я может сделаю на qt, чтобы графически выбирать каталог с рисунками и изменять их. А пока что такой вариант только есть.

Добавлено (19 Августа 2018, 11:19)
---------------------------------------------
martuk, с автоматизацией я уже придумал что можно сделать, тогда даже указывать не надо файлы, только размер в который хочешь перевести. Ну может быть и каталог указать, но можно из без этого. Я уже придумал как. Позже сделаю, так действительно будет удобней, обрабатывать пачками.

Добавлено (20 Августа 2018, 03:18)
---------------------------------------------
martuk, Всё сделал, теперь можно указать каталог и он все картинки переконвертирует в новый каталог. А у тебя наверное windows да?

afqДата: Воскресенье, 19 Августа 2018, 07:12 | Сообщение # 714 | Тема: Утилита для увеличения изображения
Разработчик
Сейчас нет на сайте
github pixelup
Решил написать эту утилиту, с параметрами только нужно не ошибиться. Так как версия первая, я не стал писать много кода по тому как правильно обрабатывать входные параметры. Но если программе доставить правильно параметры, то всё сработает нормально, то есть без ошибок. Итак представляю вашему вниманию мою маленькую утилиту pixelup. Теперь можно нарисовать в маленьком размере попиксельно рисунок и с помощью утилиты увеличить его. Размер можно любой указать. Если указать размер 2, то вместо одного пикселя станет четыре, два сверху, два снизу. Вот пример рисунка.
Вот исходный рисунок на 32x32 пикселя.

Теперь я задам размер два
Код

./pixelup -i . -o new_files -s 2

Вот что получилось

Давайте попробуем увеличить исходный рисунок на 4

Теперь увеличим на 8


Сообщение отредактировал afq - Понедельник, 20 Августа 2018, 08:25
afqДата: Пятница, 03 Августа 2018, 18:57 | Сообщение # 715 | Тема: [2D] Отсутствует элементарная функция?
Разработчик
Сейчас нет на сайте
А размер картинки ( фона ) точно меняется при другом разрешении экрана?
afqДата: Среда, 01 Августа 2018, 21:47 | Сообщение # 716 | Тема: opengl выводит черный квадрат
Разработчик
Сейчас нет на сайте
Я уже запарился пробывать разные варианты. Может кто нибудь поможет. Я пытаюсь рисовать с помощью шейдеров, vbo vao с привязкой к буферам, в общем новейшим способом. Вот код, не рисует рисунок, выводит только черный квадрат. Что не так?
Код

#include <stdio.h>
#include "gl_core_4_3.h"
#include <SDL2/SDL.h>
#include <SDL2/SDL_video.h>
#include <SDL2/SDL_opengl.h>
#include <SDL2/SDL_events.h>
#include <SDL2/SDL_keycode.h>
#include <stdlib.h>
int *vertices;
unsigned char *pixels;
int *ivert;
int *ipixels;
float *fvert;
float *fpixels;
unsigned int max_draw;
int screen_width;
int screen_height;
SDL_Window *window;
int max_pixels;

void
init_image ( long pos )
{
    FILE *fd = fopen ( "data", "r" );
    fseek ( fd, pos, SEEK_SET );
    int width;
    int height;
    fread ( &width, sizeof ( unsigned int ), 1, fd );
    fread ( &height, sizeof ( unsigned int ), 1, fd );
    fread ( &max_pixels, sizeof ( unsigned int ), 1, fd );

    pixels = calloc ( max_pixels, sizeof ( unsigned char ) );
    fpixels = calloc ( max_pixels, sizeof ( float ) );
    ipixels = calloc ( max_pixels, sizeof ( int ) );
    fread ( &pixels[0], sizeof ( unsigned char ), max_pixels, fd );

    for ( int i = 0; i < max_pixels; i++ ) {
  float m = pixels[i];
  int b = m / 0.01;
  float c = b * 0.01;
  fpixels [ i ] = c;
  ipixels [ i ] = pixels[i];
    }

    max_draw = height * width;
    vertices = calloc ( max_draw * 2, sizeof ( unsigned int ) );
    fvert = calloc ( max_draw * 2, sizeof ( float ) );
    ivert = calloc ( max_draw * 2, sizeof ( int ) );

    for ( int y = height - 1, i = 0; y >= 0; y-- ) {
  for ( int x = 0; x < width; i += 2, x++ ) {
   vertices [ i + 0 ] = x;
   vertices [ i + 1 ] = y;
   fvert [ i + 0 ] = x;
   fvert [ i + 1 ] = y;
   ivert [ i + 0 ] = x;
   ivert [ i + 1 ] = y;
  }
    }
    fclose ( fd );
    
    
}
#if 1
GLuint program;

GLuint
load_shader ( GLenum type, const char *shader_src )
{
    GLuint shader;
    GLint compiled;
    shader = glCreateShader ( type );
    printf ( "!\n" );
    if ( shader == 0 ) return 0;
    glShaderSource ( shader, 1, &shader_src, NULL );
    glCompileShader ( shader );
    glGetShaderiv ( shader, GL_COMPILE_STATUS, &compiled );
    if ( !compiled ) {
  GLint info_len = 0;
  glGetShaderiv ( shader, GL_INFO_LOG_LENGTH, &info_len );
  if ( info_len > 1 ) {
   char *info_log = malloc ( sizeof ( char ) * info_len );
   glGetShaderInfoLog ( shader, info_len, NULL, info_log );
   printf ( "shader compile %s ", info_log );
   free ( info_log );
   switch ( type ) {
    case GL_VERTEX_SHADER:
     printf ( "vertex shader!\n" );
     break;
    case GL_FRAGMENT_SHADER:
     printf ( "fragment shader!\n" );
     break;
   }
  }
  glDeleteShader ( shader );
  return 0;
    }
    return shader;
}
GLuint
loadProgram ( const char *vshader, const char *fshader )
{
    GLuint vertex_shader, fragment_shader;
    vertex_shader = load_shader ( GL_VERTEX_SHADER, vshader );
    fragment_shader = load_shader ( GL_FRAGMENT_SHADER, fshader );
    GLuint program_object;
    program_object = glCreateProgram ( );
    glAttachShader ( program_object, vertex_shader );
    glAttachShader ( program_object, fragment_shader );
    glLinkProgram ( program_object );
    GLint linked;
    glGetProgramiv ( program_object, GL_LINK_STATUS, &linked );
    if ( !linked ) {
  GLint info_len = 0;
  glGetProgramiv ( program_object, GL_INFO_LOG_LENGTH, &info_len );
  if ( info_len > 1 ) {
   char *info_log = malloc ( sizeof ( char ) * info_len );
   glGetProgramInfoLog ( program_object, info_len, NULL, info_log );
   printf ( "%s\n", info_log );
   free ( info_log );
  }
  return -1;
    }
    return program_object;
}
#endif

void init_conf ( )
{
    const char *vShaderstr =
  "#version 430\n"
  "layout(location = 0) in vec2 position;\n"
  "layout(location = 1) in vec4 color;\n"
  "uniform mat4 transform;\n"
  "out vec4 v_color;\n"
  "void main()\n"
  "{\n"
  " v_color = vec4 ( color );\n"
  " gl_Position = transform * vec4 ( position, 0.0, 1.0 );\n"
  "}";
    const char *fShaderstr =
  "#version 430\n"
//  "precision mediump float;\n"
  "in vec4 color;\n"
  "layout ( location = 0 ) out vec4 fragColor;\n"
  "void main()\n"
  "{\n"
  " fragColor = vec4 ( color );\n"
  "}";
    program = loadProgram ( vShaderstr, fShaderstr );
#if 0
    glOrtho ( 0.0f, screen_width, 0, screen_height, 0.0f, 1.0f );
#endif
}

void
draw ( )
{
    GLfloat transform[] = {
            1.0f, 0.0f, 0.0f, 0.0f,
            0.0f, 0.0f, 0.0f, 0.0f,
            0.0f, 0.0f, -1.0f, 0.0f,
            -1.0f, -1.0f, 0.0f, 1.0f,
        };
    float prj_mat[] =
    {
      2.0f/screen_width,   0.0f,  0.0f,  0.0f,
      0.0f,       2.0f/screen_height,  0.0f,  0.0f,
      0.0f,        0.0f,        -1.0f,  0.0f,
     -1.0f,       -1.0f,         0.0f,  1.0f
    };
    glUseProgram ( program );
    GLint prj_loc = glGetUniformLocation( program, "transform" );
    glUniformMatrix4fv( prj_loc, 1, GL_FALSE, prj_mat );
//    glUniformMatrix4fv( prj_loc, 1, GL_FALSE, transform );

    GLuint vbo[2];
    GLuint vao;
    glGenBuffers ( 2, &vbo[0] );
    GLuint posbufh = vbo[0];
    GLuint colbufh = vbo[1];
    glBindBuffer ( GL_ARRAY_BUFFER, posbufh );
    glBufferData ( GL_ARRAY_BUFFER, max_draw * 2 * sizeof ( float ), fvert, GL_STATIC_DRAW );
    glBindBuffer ( GL_ARRAY_BUFFER, colbufh );
    glBufferData ( GL_ARRAY_BUFFER, max_pixels * sizeof ( float ), fpixels, GL_STATIC_DRAW );
    glGenVertexArrays ( 1, &vao );
    glBindVertexArray ( vao );
    glEnableVertexAttribArray ( 0 );
    glEnableVertexAttribArray ( 1 );
    glBindBuffer ( GL_ARRAY_BUFFER, posbufh );
    glVertexAttribPointer ( 0, 2, GL_FLOAT, GL_FALSE, 0, NULL );
    glBindBuffer ( GL_ARRAY_BUFFER, colbufh );
    glVertexAttribPointer ( 1, 4, GL_FLOAT, GL_FALSE, 0, NULL );
    glBindVertexArray ( vao );

    glDrawArrays ( GL_POINTS, 0, max_draw );
    glFlush ( );
}
SDL_GLContext glc;
void init_sdl ( )
{
    SDL_Init ( SDL_INIT_TIMER | SDL_INIT_VIDEO | SDL_INIT_EVENTS );
    SDL_DisplayMode mode;
    SDL_GetCurrentDisplayMode ( 0, &mode );
    screen_width = mode.w - 64;
    screen_height = mode.h - 128;

#if 1
    if ( ogl_LoadFunctions() == ogl_LOAD_FAILED ) {
  exit ( EXIT_FAILURE );
    }
#endif
    window = SDL_CreateWindow ( "ipsi",
   0, 0,
   screen_width,
   screen_height,
   SDL_WINDOW_OPENGL
   );

#if 0
    SDL_GL_SetAttribute ( SDL_GL_CONTEXT_MAJOR_VERSION, 4 );
    SDL_GL_SetAttribute ( SDL_GL_CONTEXT_MAJOR_VERSION, 3 );
#endif
    glc = SDL_GL_CreateContext ( window );
    SDL_GL_MakeCurrent ( window, glc );
    printf ( "!!\n");
    const char *version = glGetString ( GL_VERSION );
    printf ( "%s\n", version );

    glViewport ( 0, 0, screen_width, screen_height );
    printf ( "@\n" );
    glEnable ( GL_BLEND );
    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
}
int input_thread ( void *data )
{
    SDL_Event event;
    while ( SDL_WaitEvent ( &event ) ) {
  switch ( event.type ) {
   case SDL_KEYDOWN:
    if ( event.key.keysym.sym == SDLK_q ) {
     exit ( EXIT_SUCCESS );
    }
    break;
   case SDL_MOUSEBUTTONDOWN:
    break;
   case SDL_MOUSEBUTTONUP:
    break;
   case SDL_MOUSEMOTION:
    break;
  }
    }
}
void print_version ( )
{
    const GLubyte *renderer = glGetString ( GL_RENDERER );
    const GLubyte *vendor = glGetString ( GL_VENDOR );
    const GLubyte *version = glGetString ( GL_VERSION );
    const GLubyte *glslVersion = glGetString ( GL_SHADING_LANGUAGE_VERSION );

    GLint major, minor;
    glGetIntegerv ( GL_MAJOR_VERSION, &major );
    glGetIntegerv ( GL_MINOR_VERSION, &minor );

    printf ( "gl renderer %s\n", renderer );
    printf ( "gl vender %s\n", vendor );
    printf ( "gl version %s %d.%d\n", version, major, minor );
    printf ( "gl glsl %s\n", glslVersion );
}
int main ( )
{
    
    init_sdl ( );
    print_version ( );
    init_conf ( );
    init_image ( 0 );
    SDL_CreateThread ( input_thread, "input_thread", NULL );

    while ( 1 ) {
  glClearColor ( 1, 1, 1, 1 );
  glClear ( GL_COLOR_BUFFER_BIT );
  draw ( );
  SDL_GL_SwapWindow ( window );
  SDL_Delay ( 0.01 );
    }

}

Добавлено (03 Августа 2018, 18:55)
---------------------------------------------
Оказывается что имя выходного цвета должно совпадать с именем входным в фрагментном шейдере.

afqДата: Среда, 25 Июля 2018, 05:59 | Сообщение # 717 | Тема: надо разобраться с шейдерами
Разработчик
Сейчас нет на сайте
Вот какая проблема. Есть такие шейдеры, которые я напишу ниже. Пока я знаю так как написано, и у меня множество вопросов возникает.
Код

const char *vShaderstr =
  "#version 300 es\n"
  "layout(location = 0) in vec4 a_color;\n"
  "layout(location = 1) in vec2 a_position;\n"
  "out vec4 v_color;\n"
  "void main()\n"
  "{\n"
  " v_color = a_color;\n"
  " gl_Position = a_position;\n"
  "}";
    const char *fShaderstr =
  "#version 300 es\n"
  "precision lowp float;\n"
  "in vec4 v_color;\n"
  "out vec4 o_fragColor;\n"
  "void main()\n"
  "{\n"
  " o_fragColor = v_color;\n"
  "}";

проблема в том, как я думаю, что vec4 это float. А мои данные такие.
Код

    glVertexAttribPointer ( 0, 4, GL_UNSIGNED_BYTE, GL_FALSE, 0, pixels );
    glVertexAttribPointer ( 1, 2, GL_INT, GL_FALSE, 0, vertices );
    glEnableVertexAttribArray ( 0 );
    glEnableVertexAttribArray ( 1 );
    glDrawArrays ( GL_POINTS, 0, max_draw );

по этому коду видно, что pixels состоит из байтов, четыре цвета на пиксель, то есть rgba, и координаты vertices, которые по x,y, то есть всего две координаты, и не float а int. Думаю в этом коде много проблем. Но как правильно надо?

Так как я разобрался с этим
Код

#if 0
    glVertexPointer ( 2, GL_INT, 0, vertices );
    glColorPointer ( 4, GL_UNSIGNED_BYTE, 0, pixels );
#endif

мне захотелось узнать больше, и попробывать с помощью шейдеров работать.
afqДата: Воскресенье, 22 Июля 2018, 06:24 | Сообщение # 718 | Тема: Индивидуальный статус
Разработчик
Сейчас нет на сайте
Мне пожалуйста "Разработчик" с цветом "#38caff"
afqДата: Воскресенье, 22 Июля 2018, 00:29 | Сообщение # 719 | Тема: Unity ADS, как вообще работает
Разработчик
Сейчас нет на сайте
TheGuy, там же вроде написано, что расчёт в течении или через неделю происходит после просмотра. А что за игра?
afqДата: Суббота, 21 Июля 2018, 20:52 | Сообщение # 720 | Тема: воспроизведение игры в окне редактора движка
Разработчик
Сейчас нет на сайте
DivES, да я пока ещё не пробывал такое. Но программу можно компилировать вроде бы без библиотеки, а в самой программе уже искать нужную версию библиотеки, то есть нашей. И всё. Да должно получиться, я надеюсь на это. Потом отпишусь как сделаю это, будешь знать. Потом вдруг сам захочешь делать такой на с++ или си, и уже будешь знать что можно в библиотеке игру сделать и подсоединить к редактору, и выполнить нужную функцию.

Добавлено (22 Июля 2018, 01:52)
---------------------------------------------
DivES, что-то пока не получается в qt. Попробую ещё в gtk, но нужно бы на qt чтобы с++ было.

Добавлено (22 Июля 2018, 01:53)
---------------------------------------------
DivES, есть функция void (*loop)(); она получает ссылку на функцию с помощью dlsym, но она не получает её, потому что если сделать такую проверку, то ничего не будет.

Код

if ( loop ) {
  loop()
}

Если выполнить эту функцию без проверки, то вся программа завершиться с ошибкой.
Форум игроделов » Записи участника » afq [893]
Поиск:

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