Суббота, 30 Ноября 2024, 00:53

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
Результаты поиска
afqДата: Воскресенье, 12 Января 2020, 09:51 | Сообщение # 341 | Тема: реализация издателя и подписчика на си.
Разработчик
Сейчас нет на сайте
drcrack, да не. там единицы написали, не все такие. не знаю даже почему ты встал на их сторону, на сторону меньшинства. что там профи такие чтоли сидят? которые бояться без компилятора ошибок наделать. они возможно и не поняли в чем плюс такого подхода. и пишут свои js программы. это же веб разработчики. они не шарят в си программировании и указывают на недостатки си языка, типа их язык лучше, что типа на их языке это можно реализовать без всяких проблем, с которыми можно столкнуться в поем языке. ты же сам знаешь что на си и c++ можно отстрелить себе ногу ( как говориться ). как можно набираться опыта у js программиста, который учит не как на си это делать, а как это выглядит на js. ты хоть смотри с кем я спорю.
afqДата: Воскресенье, 12 Января 2020, 08:08 | Сообщение # 342 | Тема: реализация издателя и подписчика на си.
Разработчик
Сейчас нет на сайте
Блин, на хабре минусуют статью как всегда. )

Я ещё видео записал, только наверное плохо обдумал архитектуру примера. Но всё же пример рабочий. Я сделал так, что после каждого отправления события, очищаются данные. Но в реальном приложении такие данные врядли надо чистить. они наверное должны храниться в памяти или в базе данных. Посмотрите пожалуйста и напишите ваше мнение о таком способе, правильно ли я делаю или не правильно. Может советы какие нибудь. Может я что-то для себя интересное открою читая ваши комментарии.
afqДата: Суббота, 11 Января 2020, 19:24 | Сообщение # 343 | Тема: какой то глюк в opengl чтоли.
Разработчик
Сейчас нет на сайте
Xakep, а, ясно. все равно рисуется почему то один треугольник. а в каких то случаях рисовалось почти пол квадрата с разными цветами.
afqДата: Суббота, 11 Января 2020, 16:07 | Сообщение # 344 | Тема: какой то глюк в opengl чтоли.
Разработчик
Сейчас нет на сайте
Xakep, ну я подумал что на 9 это значит, что три компоненты, это одна точка в пространстве, 6 компонент, это две точки в пространстве. 9 компонент, это три точки в пространстве, а значит треугольник. Ну насчет glm::vec3 не знаю. Так как то удобней код организовать. указал размер массива, чтобы считать и считал в массив float и всё.
afqДата: Суббота, 11 Января 2020, 08:33 | Сообщение # 345 | Тема: реализация издателя и подписчика на си.
Разработчик
Сейчас нет на сайте
Захотелось даже статью на хабре написать. ))) habr

там я вроде объяснил чем удобно программирование на си с помощью такого паттерна наблюдателя.
afqДата: Суббота, 11 Января 2020, 02:41 | Сообщение # 346 | Тема: реализация издателя и подписчика на си.
Разработчик
Сейчас нет на сайте
Написал я в общем это. На си мне как то больше нравиться как выглядит код, чем в ооп. Вдруг кому нужно, пожалуйста, скачивайте publisher

этот код работает глобально. то есть если есть один издатель TRADE, то он будет во всей программе. Можно из любой части получить данные от издателя. Имеется несколько функций упрощающее управление издателем. Можно например отписаться подписчику с определенными данными, а можно отписаться подписчику со всеми данными. То есть подписчик это функция. с помощью функции init_publisher можно указать к какому подписчику отправлять события. Можно подписаться одному и тому же подписчику с разными данными. Есть функция, которая убирает сразу подписчика со всеми данными. А есть функция, которая убирает всех подписчиков.
afqДата: Суббота, 11 Января 2020, 01:52 | Сообщение # 347 | Тема: Знаете какие нибудь сервисы работающие на websocket?
Разработчик
Сейчас нет на сайте
Написал программу для работы с websocket. websocket_client. Хочу где нибудь применить. Пробывал на twitch, но там какие то заморочки с oauth2. то есть там есть возможность получить oauth с помощью управления на сайте. но чтобы подписаться на события в websocket, надо запросить права для oauth2, а это у меня не получается. да и вообще у меня проблема пока что с oauth2. он отсылает на другую страницу для получения токена. я не пойму как получить его. недавно подумал что надо загрузить эту страницу, но там возможно нужен js. короче проблема.

может вы знаете какие нибудь сервисы, которые используют websocket? я бы у себя на компьютере сделал бы информационные сервисы всякие, которые получают инфу из инета.
afqДата: Суббота, 11 Января 2020, 00:36 | Сообщение # 348 | Тема: локальные сети и связь
Разработчик
Сейчас нет на сайте
sitx34, и что ты там купил?
afqДата: Пятница, 10 Января 2020, 18:19 | Сообщение # 349 | Тема: какой то глюк в opengl чтоли.
Разработчик
Сейчас нет на сайте
а понятно. для треугольника нужно 9 компонент. тогда надо делать на 9.
afqДата: Пятница, 10 Января 2020, 18:13 | Сообщение # 350 | Тема: какой то глюк в opengl чтоли.
Разработчик
Сейчас нет на сайте
Xakep,
Цитата
Но как минимум ты делаешь опять ту же ошибку, что и в предыдущем примере - `length_v` нужно делить на 3 в `glDrawArrays`, т.к. у тебя 3 компонента на вершину.
ну я не понимаю. а сколько тогда надо рисовать. если у меня допустим 6 компонентов?
afqДата: Среда, 08 Января 2020, 23:53 | Сообщение # 351 | Тема: какой то глюк в opengl чтоли.
Разработчик
Сейчас нет на сайте
Xakep, у меня ещё есть проблема с model.cpp. выложу сюда код. я загружаю модель obj формата. но этот формат изначально преобразую с помощью утилиты в tools. зря я наверное удалил примеры. там были объекты из blender. так вот. я проверял, все координаты правильно считываются. но проблема в том что рисуется только один треугольник. в gldrawarrays я задаю общее количество вершин поделенное на три. думаю так правильно рисовать треугольники. шейдер с тенями я пока не осилил, но есть книга где написано как тени делать, но мне пока не надо это. приведу пример шейдера без текстуры и исходника model.
Код

#version 300 es
layout ( location = 0 ) in vec3 position;
layout ( location = 1 ) in vec3 normaly;
layout ( location = 2 ) in vec4 color;
uniform mat4 transform;
uniform mat4 perspective;
uniform mat4 rotate;
out vec4 v_color;

void main ( )
{
  gl_Position = perspective * transform * vec4 ( position, 1.0 );
  v_color = color;
}

Код

#version 300 es
precision mediump float;
in vec4 v_color;
layout ( location = 0 ) out vec4 out_color;
void main ( )
{
  out_color = v_color;
}

Код

#ifndef __MODEL_H__
#define __MODEL_H__
#include "../glm/glm.hpp"
#include "../glm/ext.hpp"
#include "sprite.h"
#include "object.h"
#include "types.h"

struct frame {
    unsigned int length_v;
    unsigned int length_vt;
    unsigned int length_vn;

    float *v;
    float *vn;
    float *vt;

    unsigned int current_length;
};

struct with_t {
    int sampler_location;
    int transform_location;
    int perspective_location;
    int rotate_location;
};

struct without_t {
    int transform_location;
    int perspective_location;
    int rotate_location;
};

class Model : public Object {
    private:
  glm::mat4 proj;
  glm::mat4 view;
  glm::mat4 model;
  glm::mat4 rotate;
  glm::mat4 result;

  glm::vec4 color;

  struct frame *frames;

  unsigned int current_frame;

  unsigned int program_wit;
  unsigned int program_wiot;

  struct with_t wit;
  struct without_t wiot;

  unsigned int textureid;

  friend void draw_with_texture ( Model * );
  friend void draw_without_texture ( Model * );

  void (*map) ( Model * );

    public:
  int get_type ( ) {
   return Type::MODEL;
  }
  float x;
  float y;
  float z;
  Model ( );
  void read_file ( const char *file ) override;
  void draw ( ) override;
  void set_color ( glm::vec4 color );
  void switch_to ( void );
  void transform ( const glm::vec3 &translate );
  Sprite *texture;
};
#endif

Код

#include "model.h"
#include <stdio.h>
#include <string.h>
#include "vars.h"
#include "conf.h"
#include "gl.h"

extern struct conf cf;

Model::Model ( ) {
    this->frames = nullptr;
    this->texture = nullptr;

    float aspect = ( float ) cf.screen_width / ( float ) cf.screen_height;

    this->proj = glm::perspective ( glm::radians ( 45.f ), aspect, 0.0f, 100.f );
    this->view = glm::translate ( glm::mat4 ( 1.0f ), glm::vec3 ( 0.f, 0.f, 0.f ) );
    this->model = glm::mat4 ( 1.0f );
    this->rotate = glm::mat4 ( 1.0f );

    this->current_frame = 0;

    this->program_wit = cf.programs [ SHADER_MODEL_WITH_TEXTURE ];
    this->program_wiot = cf.programs [ SHADER_MODEL_WITHOUT_TEXTURE ];

    int error;
    glUseProgram ( this->program_wit );
    this->wit.sampler_location = glGetUniformLocation ( this->program_wit, "s_texture" );
    this->wit.transform_location = glGetUniformLocation ( this->program_wit, "transform" );
    this->wit.perspective_location = glGetUniformLocation ( this->program_wit, "perspective" );
    this->wit.rotate_location = glGetUniformLocation ( this->program_wit, "rotate" );

    glUseProgram ( this->program_wiot );
    this->wiot.transform_location = glGetUniformLocation ( this->program_wiot, "transform" );
    this->wiot.perspective_location = glGetUniformLocation ( this->program_wiot, "perspective" );
    this->wiot.rotate_location = glGetUniformLocation ( this->program_wiot, "rotate" );
}

void Model::transform ( const glm::vec3 &translate ) {
    this->x = translate.x;
    this->y = translate.y;
    this->z = translate.z;
    this->view = glm::translate ( this->model, translate );
}

void Model::set_color ( glm::vec4 color ) {
    this->color = color;
}

void draw_with_texture ( Model *m ) {
    glUseProgram ( m->program_wit );

    glActiveTexture ( GL_TEXTURE0 );
    glBindTexture ( GL_TEXTURE_2D, m->textureid );

    glUniform1i ( m->wit.sampler_location, 0 );
    glUniformMatrix4fv ( m->wit.transform_location, 1, GL_FALSE, &m->view[0][0] );
    glUniformMatrix4fv ( m->wit.perspective_location, 1, GL_FALSE, &m->proj[0][0] );
    glUniformMatrix4fv ( m->wit.rotate_location, 1, GL_FALSE, &m->rotate[0][0] );

    glEnableVertexAttribArray ( 0 );
    glEnableVertexAttribArray ( 1 );
    glEnableVertexAttribArray ( 2 );

    glVertexAttribPointer ( 0, 3, GL_FLOAT, GL_FALSE, 0, m->frames[m->current_frame].v );
    glVertexAttribPointer ( 1, 3, GL_FLOAT, GL_FALSE, 0, m->frames[m->current_frame].vn );
    glVertexAttribPointer ( 2, 2, GL_FLOAT, GL_FALSE, 0, m->frames[m->current_frame].vt );

    glDrawArrays ( GL_TRIANGLES, 0, m->frames[m->current_frame].length_v );

    glDisableVertexAttribArray ( 0 );
    glDisableVertexAttribArray ( 1 );
    glDisableVertexAttribArray ( 2 );
}

void draw_without_texture ( Model *m ) {
    glUseProgram ( m->program_wiot );

    glUniformMatrix4fv ( m->wiot.transform_location, 1, GL_FALSE, &m->view[0][0] );
    glUniformMatrix4fv ( m->wiot.perspective_location, 1, GL_FALSE, &m->proj[0][0] );
    glUniformMatrix4fv ( m->wiot.rotate_location, 1, GL_FALSE, &m->rotate[0][0] );

    glEnableVertexAttribArray ( 0 );
    glEnableVertexAttribArray ( 1 );
    glEnableVertexAttribArray ( 2 );

    glVertexAttribPointer ( 0, 3, GL_FLOAT, GL_FALSE, 0, m->frames[m->current_frame].v );
    glVertexAttribPointer ( 1, 3, GL_FLOAT, GL_FALSE, 0, m->frames[m->current_frame].vn );
    glVertexAttribPointer ( 2, 4, GL_FLOAT, GL_FALSE, 0, &m->color[0] );

    glDrawArrays ( GL_TRIANGLES, 0, m->frames[m->current_frame].current_length  );

    glDisableVertexAttribArray ( 0 );
    glDisableVertexAttribArray ( 1 );
    glDisableVertexAttribArray ( 2 );
}

void Model::switch_to ( ) {
    if ( this->texture ) this->map = draw_with_texture;
    else this->map = draw_without_texture;
}

void Model::draw ( ) {
    this->map ( this );
}

void Model::read_file ( const char *file ) {
    int count;

    char path[255] = { 0 };
    snprintf ( path, 254, "%s/models/%s", DEFAULT_ASSETS, file );
    FILE *fp = fopen ( path, "r" );
    fread ( &count, sizeof ( int ), 1, fp );
    this->frames = new struct frame [ count ];

    for ( int i = 0; i < count; i++ ) {
  fread ( &this->frames[i].length_v,  sizeof ( unsigned int ), 1, fp );
  fread ( &this->frames[i].length_vt, sizeof ( unsigned int ), 1, fp );
  fread ( &this->frames[i].length_vn, sizeof ( unsigned int ), 1, fp );

  this->frames[i].current_length = this->frames[i].length_v / 3;

  this->frames[i].v  = new float [ this->frames[i].length_v ];
  this->frames[i].vt = new float [ this->frames[i].length_vt ];
  this->frames[i].vn = new float [ this->frames[i].length_vn ];

  fread ( &this->frames[i].v[0],  sizeof ( float ), this->frames[i].length_v, fp );
  fread ( &this->frames[i].vn[0], sizeof ( float ), this->frames[i].length_vn, fp );
  fread ( &this->frames[i].vt[0], sizeof ( float ), this->frames[i].length_vt, fp );
    }

    fclose ( fp );
}
afqДата: Среда, 08 Января 2020, 11:10 | Сообщение # 352 | Тема: какой то глюк в opengl чтоли.
Разработчик
Сейчас нет на сайте
Xakep, спасибо.
afqДата: Среда, 08 Января 2020, 11:10 | Сообщение # 353 | Тема: какой то глюк в opengl чтоли.
Разработчик
Сейчас нет на сайте
drcrack, ну фиг знает. я с играми долго не связывался потому что контента не было. а щас вроде начал рисовать и появилась возможность делать игру.
afqДата: Среда, 08 Января 2020, 07:28 | Сообщение # 354 | Тема: какой то глюк в opengl чтоли.
Разработчик
Сейчас нет на сайте
Xakep, ну когда же ты проверишь? У тебя доступ к компьтеру чтоли ограничен? :)
afqДата: Вторник, 07 Января 2020, 18:26 | Сообщение # 355 | Тема: какой то глюк в opengl чтоли.
Разработчик
Сейчас нет на сайте
Xakep, всё выложил код. github

только я пока в коде не делал удаление объектов, потому что пока на этапе меню зациклился и рисования. может даже код заценишь. но вряд ли. ты ведь хотел только запустить. ну а так если поймешь код, то может совет какой нибудь дашь. ) ладно, все.
afqДата: Вторник, 07 Января 2020, 03:43 | Сообщение # 356 | Тема: текстура спрайта как nearest в unity
Разработчик
Сейчас нет на сайте
drcrack, о спасибо.
afqДата: Вторник, 07 Января 2020, 03:12 | Сообщение # 357 | Тема: текстура спрайта как nearest в unity
Разработчик
Сейчас нет на сайте
попробывал несколько дней назад unity. вот я добавил spritesheet. когда он разрезался как multiple или с помощью sprite editor, спрайт стал похож, будто в glTexImage2d его отфильтровали с помощью параметра LINEAR, а это нечеткое изображение. а пиксельная графика должна быть с NEAREST. но в opengl я знаю, а как это в unity установить не знаю. надеюсь вы знаете что это за параметры. в общем пиксельная графика должна быть четкая, а в unity по умолчанию у меня получилась размытая. и не нашел я параметры, где можно установить нужные значения. Подскажите.

может кто нибудь даст свой дискорд, чтобы мне могли помогать оперативно?
afqДата: Вторник, 07 Января 2020, 02:59 | Сообщение # 358 | Тема: Пиксель - арт.
Разработчик
Сейчас нет на сайте
рисую для игры. может смогу сделать эту игру.
afqДата: Вторник, 07 Января 2020, 02:38 | Сообщение # 359 | Тема: какой то глюк в opengl чтоли.
Разработчик
Сейчас нет на сайте
Xakep, уменьшил размер кнопок и линии исчезли. я уже обрадывался. а потом запустил ещё раз и линии появились. ошибка наблюдается только при создании кнопок. если кнопки создать, но не рисовать, то ошибка наблюдается. если кнопки вообще не создавать, то ошибки не видно. в кнопке есть объекты: box и font. box - отвечает за вывод например прямоугольника. но в коде вроде тоже все нормально. блин. если не получиться исправить, то придется переходить на unity.
afqДата: Понедельник, 06 Января 2020, 22:15 | Сообщение # 360 | Тема: какой то глюк в opengl чтоли.
Разработчик
Сейчас нет на сайте
Xakep, а понятно. цвет текстуры умножается на оттенок. получается ну типа оттенка. ну я понял, даже если не правильно объяснил.
Поиск:

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