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

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
Результаты поиска
afqДата: Воскресенье, 19 Августа 2018, 11:17 | Сообщение # 721 | Тема: Утилита для увеличения изображения
Разработчик
Сейчас нет на сайте
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 | Сообщение # 722 | Тема: Утилита для увеличения изображения
Разработчик
Сейчас нет на сайте
github pixelup
Решил написать эту утилиту, с параметрами только нужно не ошибиться. Так как версия первая, я не стал писать много кода по тому как правильно обрабатывать входные параметры. Но если программе доставить правильно параметры, то всё сработает нормально, то есть без ошибок. Итак представляю вашему вниманию мою маленькую утилиту pixelup. Теперь можно нарисовать в маленьком размере попиксельно рисунок и с помощью утилиты увеличить его. Размер можно любой указать. Если указать размер 2, то вместо одного пикселя станет четыре, два сверху, два снизу. Вот пример рисунка.
Вот исходный рисунок на 32x32 пикселя.

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

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

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

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

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


Сообщение отредактировал afq - Понедельник, 20 Августа 2018, 08:25
afqДата: Пятница, 03 Августа 2018, 18:57 | Сообщение # 723 | Тема: [2D] Отсутствует элементарная функция?
Разработчик
Сейчас нет на сайте
А размер картинки ( фона ) точно меняется при другом разрешении экрана?
afqДата: Среда, 01 Августа 2018, 21:47 | Сообщение # 724 | Тема: 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 | Сообщение # 725 | Тема: надо разобраться с шейдерами
Разработчик
Сейчас нет на сайте
Вот какая проблема. Есть такие шейдеры, которые я напишу ниже. Пока я знаю так как написано, и у меня множество вопросов возникает.
Код

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

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

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

Код

if ( loop ) {
  loop()
}

Если выполнить эту функцию без проверки, то вся программа завершиться с ошибкой.
afqДата: Суббота, 21 Июля 2018, 14:05 | Сообщение # 729 | Тема: Объясните пожалуйста?? :)
Разработчик
Сейчас нет на сайте
Lenar_Asdera, а на сервере у тебя тоже будет на c# программа написана? Может ты лучше сделаешь для игры в локальной сети. Так проблем будет меньше, и можно будет играть по сети.
afqДата: Суббота, 21 Июля 2018, 14:02 | Сообщение # 730 | Тема: воспроизведение игры в окне редактора движка
Разработчик
Сейчас нет на сайте
GC-Vic, martuk, DivES, а что если это не плеер, ну к примеру вот о чём подумал. Но назовём его плеером, чтобы было понятней о чём я пишу. В плеере есть такой код, получить указатель на библиотеку динамическую и выполнить код. А код проекта, если надо проверить как работает игра в игровом редакторе, то вся игра компилируется в библиотеку. Может так получиться?
afqДата: Суббота, 21 Июля 2018, 01:49 | Сообщение # 731 | Тема: воспроизведение игры в окне редактора движка
Разработчик
Сейчас нет на сайте
DivES, ага, а это интересно, может так и есть в других движках. Чтож буду иметь ввиду, спасибо.
afqДата: Суббота, 21 Июля 2018, 00:35 | Сообщение # 732 | Тема: воспроизведение игры в окне редактора движка
Разработчик
Сейчас нет на сайте
GC-Vic, ну моё пока ещё трудно назвать движок, но я бы хотел узнать как вообще такое делают. Как такое возможно вообще, не могу представить. Например я на qt буду делать движок. Но варианты не обязательно должны быть на qt. какие вообще способы есть?
afqДата: Суббота, 21 Июля 2018, 00:05 | Сообщение # 733 | Тема: воспроизведение игры в окне редактора движка
Разработчик
Сейчас нет на сайте
Как так делают? Видел в unity, что в редакторе можно запустить проект игры и играть в самом редакторе, то же самое видел и unreal engine, как такое можно сделать, не пойму?
afqДата: Вторник, 17 Июля 2018, 13:54 | Сообщение # 734 | Тема: Исходники игр для новичка
Разработчик
Сейчас нет на сайте
orkons, делал шахматы на unity3d, там человечки ходили и атаковали. Сделал правила все, кроме этого, пешка когда доходит до края доски ( нужно выбрать на какую фигуру менять пешку ). Хотел же выложить исходники, чтобы кто нибудь другой по желанию закончил проект. Но получилось так, что исходники были удалены.
afqДата: Воскресенье, 15 Июля 2018, 23:06 | Сообщение # 735 | Тема: glDrawArrays завершает программу с ошибкой
Разработчик
Сейчас нет на сайте
DivES, да, y отвечает за вертикаль, x за горизонталь, чтобы в одной строке разместить две координаты x и y, нужно две строки писать. И всё это в один массив наполняется.

Добавлено (15 Июля 2018, 21:11)
---------------------------------------------
DivES, я знаешь что сделал, и получилось, хаха, щас увидишь, только я думал что хоть с этими функциями будет прозрачный фон, ан нет, вместо прозрачности, черный цвет.

Код

    vertices = new int [ 8192 ];
    if ( !vertices ) {
  printf ( "@!@\n" );
    }
#if 1
    for ( int y = 0, i = 0; y < height; y++ ) {
  for ( int x = 0; x < width; i += 2, x++ ) {
   vertices[ i + 0 ] = x;
   vertices[ i + 1 ] = y;
  }
    }

Добавлено (15 Июля 2018, 22:11)
---------------------------------------------
DivES, Всё, получилось, чтобы была прозрачность, нужно дописать две функции, и вот какие.

Код

glEnable ( GL_BLEND );
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

Добавлено (15 Июля 2018, 23:06)
---------------------------------------------
На снимке видно, два изображения головы и квадрат с прозрачностью.

afqДата: Воскресенье, 15 Июля 2018, 20:11 | Сообщение # 736 | Тема: glDrawArrays завершает программу с ошибкой
Разработчик
Сейчас нет на сайте
Вот код, здесь загружается рисунок и создаётся координаты vertex для составления квадрата, на котором каждый пиксель будет своего цвета. Я как начал использовать glColorPointer, так всегда завершается с ошибкой, что не так, вот код.
Код

#include "Sprite.hpp"

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

Sprite::Sprite ( )
{
}

void Sprite::load ( long 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" );
    }

    vertices = new int [ max_pixels ];
    if ( !vertices ) {
  printf ( "@!@\n" );
    }
    for ( int y = 0; y < 64; y++ ) {
  for ( int x = 0, i = 0; x < 64; i += 2, x++ ) {
   vertices[ 0 + ( y * ( 64 - 1 ) + i ) ] = x;
   vertices[ 1 + ( y * ( 64 - 1 ) + i ) ] = y;
  }
    }

    std::fclose ( fd );
}
void Sprite::render ( )
{

    glPushMatrix ( );

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

    glEnableClientState ( GL_VERTEX_ARRAY );
    glEnableClientState ( GL_COLOR_ARRAY );

    glVertexPointer ( 2, GL_INT, 0, vertices );
    glColorPointer ( 4, GL_UNSIGNED_BYTE, 0, pixels );
//    glDrawElements ( GL_POINTS, indices.length, GL_UNSIGNED_BYTE, indices.v );
    glDrawArrays ( GL_POINTS, 0, 4096 );

    glDisableClientState ( GL_VERTEX_ARRAY );
    glDisableClientState ( GL_COLOR_ARRAY );

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

    glPopMatrix ( );

    glFlush ( );
}
void Sprite::init_texture ( )
{
}



Добавлено (15 Июля 2018, 18:37)
---------------------------------------------
Отредактировал код, щас выводит изображение, но оно не такое, как на картинке. Что же не так. Может неправильно построил вершины. Ну там где
Код

for ( int y = 0; y < 64; y++ ) {
  for ( int x = 0, i = 0; x < 64; i += 2, x++ ) {
   vertices[ 0 + ( y * ( 64 - 1 )  + i ) ] = x;
   vertices[ 1 + ( y * ( 64 - 1 ) + i ) ] = y;
  }
    }

Добавлено (15 Июля 2018, 20:11)
---------------------------------------------
Выводиться какая то билиберда, только не много видны некоторые пиксели, похожие.

Сообщение отредактировал afq - Воскресенье, 15 Июля 2018, 20:10
afqДата: Среда, 11 Июля 2018, 17:58 | Сообщение # 737 | Тема: Вывод спрайта и его прозрачность
Разработчик
Сейчас нет на сайте
Snake174, давай на java. Весь код? Сюда? Или на github?
afqДата: Среда, 11 Июля 2018, 12:14 | Сообщение # 738 | Тема: Вывод спрайта и его прозрачность
Разработчик
Сейчас нет на сайте
Snake174, я так понел ты с gl_Begin делал, у меня так тоже с прозрачностью рисовался. Но на нетбуке тормозило если несколько рисунков надо было нарисовать, потому что пока в цикле все поинты нарисуются, пройдет время.
afqДата: Вторник, 03 Июля 2018, 11:08 | Сообщение # 739 | Тема: Вывод спрайта и его прозрачность
Разработчик
Сейчас нет на сайте
Snake174, можешь снимок предоставить прозрачного спрайта?
afqДата: Вторник, 03 Июля 2018, 08:07 | Сообщение # 740 | Тема: Вывод спрайта и его прозрачность
Разработчик
Сейчас нет на сайте
Snake174, я тоже раньше в int помещал все четыре цвета. А потом понел что можно по одному ( unsigned char ) для каждого цвета писать в массив, а потом за раз записать в data файл весь массив. И также прочесть одним разом без цикла. Я сегодня поменял и теперь за один раз считывает все цвета из data файла. Сначала размеры считываются, потом количество пикселей, а потом за раз требуемая длина, так лучше.

Добавлено (03 Июля 2018, 08:07)
---------------------------------------------
Snake174, а почему ты показываешь старый проект? Как там рисунок отображается, с прозрачностью?

Поиск:

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