GameDev.ru
/ GameDev.ru / Пользователи / Andrey / Сообщения на форуме пользователя Andrey (5 стр.)

Сообщения на форуме пользователя Andrey (5 стр.)

winsock по я могу зайти на сервер,другие нет!30 окт. 201217:14#8
dev
>платформозависимый код?
Кроме WSAStartup,WSAGetLastError, и INVALID_SOCKET нету ничего платформо зависимого.
WunderProgrammer
пробуй WSAGetLastError + FormatMessage
DevIL || SOIL29 окт. 201210:12#11
Int64
> Всем привет, не знаю какую библиотеку лучше использовать для загрузки текстур,
> подскажите пожалуйста что лучше использовать, какие плюсы и минусы этих
> библиотек?
Для редактора используй DevIL что-бы грузить все текстуры. Для движка в идеале вообще кроме DDS ВООБЩЕ ничего не нужно, хотя может и png для карты высот к примеру.PlayerDark
> PNG???
> TGA то, пожалуй, лучший формат для несжатых изображений.
Да ну. PNG лучше сжимается у него deflate сжатие, TGA это RLE.
TGA устаревший, редко поддерживается. PNG развивается постоянно, больше используется. Так что TGA в топку.
Mac OS, X Window System: XOpenDevice вылетает20 окт. 20120:12#0
Создаю как обычно окно,там же успешно инициализируется OpenGL.
Получаю список устройств вызовом XListInputDevices
список содержит следующее(массив XDeviceInfo *):

Fri Oct 19 23:59:41 2012 Device id 2 device name Virtual core pointer
Fri Oct 19 23:59:41 2012 Device id 3 device name Virtual core keyboard
Fri Oct 19 23:59:41 2012 Device id 4 device name Virtual core XTEST pointer
Fri Oct 19 23:59:41 2012 Device id 5 device name Virtual core XTEST keyboard
Fri Oct 19 23:59:41 2012 Device id 6 device name xquartz virtual pointer
Fri Oct 19 23:59:41 2012 Device id 7 device name xquartz virtual keyboard
Fri Oct 19 23:59:41 2012 Device id 8 device name pen
Fri Oct 19 23:59:41 2012 Device id 9 device name cursor
Fri Oct 19 23:59:41 2012 Device id 10 device name eraser

Судя подокументации 1 устройсто мышь, т.к. XDeviceInfo::use == IsXPointer, второе клавиатура XDeviceInfo::use == IsXKeyboard(поле use смотрел в отладчике в консоль не выводил)
Вызов XOpenDevice(dis, 2); или XOpenDevice(dis, 3); приводит к завершению процесса с сообщениями в консоле:

X Error of failed request:  XI_BadDevice (invalid Device parameter)
  Major opcode of failed request:  133 (XInputExtension)
  Minor opcode of failed request:  3 (X_OpenDevice)
  Device id in failed request: 0x600002
  Serial number of failed request:  31
  Current serial number in output stream:  31

Что не так? Может пошаманить с XQuartz?
Установка компиляция OPENGL in Linux19 окт. 201214:26#8
The Andreyp
для создания контекста тебе нужен Display и Window.
Функция примерно будет выглядеть так:
#ifdef _WIN32
bool CGlRender::Create(Window g_hWnd, uint numSecondaryContexts)
#else
bool CGlRender::Create(Display* display, Window g_hWnd, uint numSecondaryContexts)
#endif
ATI Fetch4 в OpenGL18 окт. 201211:25#93
innuendo
> http://www.opengl.org/registry/specs/NV/gpu_program5.txt
ага. Только кто на asm будет писать? Если только через Cg получать это.
Установка компиляция OPENGL in Linux17 окт. 201213:35#2
The Andreyp
>как поставить хардварные библиотеки - чтобы все работало железно и родное было?
дрова.
>под линуском вижу это уже есть в gl.h и ошибки редифинишена PFNGLBINDBUFFERARBPROC glBindBufferARB; и прочее
Ну естественно Это платформозависимо. Используй GLX и X Window System(usr/include/x11).


>придется ли мне ОБЯЗАТЕЛЬНО осздавать конткест 3 гл например для линукса или что
как хочешь. Не уверен в качестве дров под OpenGL 3.0 и выше.
>просто пугает что в gl.h для линукса уже все расширения есть и видимо даже не придется получать адреса процедур - или так будет работать со старьем ?
Придется. либо сам через glxGetProcAdress но лучше возьми glew и скомпиль его.

Вот это работает на Mac OS(OpenGL 2.1). Контекст 3.0 выше пока не создается. Буду копать.

#include <x11/xlib.h>
#include <gl/glew.h> // включает и gl.h
#include <gl/glx.h>

     int glx_major = 0;
    int glx_minor = 0;


  // FBConfigs were added in GLX version 1.3.
    if (!glXQueryVersion(dis, &glx_major, &glx_minor) || (1 == glx_major && glx_minor < 3) || (glx_major < 1))   {
        console.AddMessage(Console::ERROR_MESSAGE, "Invalid GLX version\n");
        return false;
    }
    // Get a matching FB config
    static int visual_attribs[] =
    {
        GLX_X_RENDERABLE    , True,
        GLX_DRAWABLE_TYPE   , GLX_WINDOW_BIT,
        GLX_RENDER_TYPE     , GLX_RGBA_BIT,
        GLX_X_VISUAL_TYPE   , GLX_TRUE_COLOR,
        GLX_RED_SIZE        , 8,
        GLX_GREEN_SIZE      , 8,
        GLX_BLUE_SIZE       , 8,
        GLX_ALPHA_SIZE      , 8,
        GLX_DEPTH_SIZE      , 24,
        GLX_STENCIL_SIZE    , 8,
        GLX_DOUBLEBUFFER    , True,
        //GLX_SAMPLE_BUFFERS  , 1,
        //GLX_SAMPLES         , 4,
        None
    };
#if 1
    int nelements = 0;
    int screen = DefaultScreen(dis);
    GLXFBConfig* fbc = glXChooseFBConfig(dis, screen, visual_attribs, &nelements);
    OutMessage(Console::INFO_MESSAGE, Console::StdMessage[Console::GET_RENDER_CONTEXT]);
    XVisualInfo* vis = glXGetVisualFromFBConfig(dis, fbc[0]);
  
    fprintf(stderr, "Chosen visual ID = 0x%x\nCreating colormap\n", vis->visualid );
    XSetWindowAttributes swa;
    Colormap cmap;
    swa.colormap = cmap = XCreateColormap(dis, RootWindow(dis, vis->screen), vis->visual, AllocNone);
    swa.background_pixmap = None ;
    swa.border_pixel      = 0;
    swa.event_mask        = StructureNotifyMask;

    Window wnd = XCreateWindow(dis, RootWindow(dis, vis->screen), 0, 0, WindowWidth, WindowHeight, 0, vis->depth, InputOutput,
                              vis->visual, CWColormap | CWEventMask, &swa);
    XSetWindowBackground(dis, wnd, 0);
    if (!wnd) {
        fprintf(stderr, "Can't create window\n");
        return false;
    }
    XMapWindow(dis, wnd);
    XStoreName(dis, wnd, "");
    GLXContext glrc = glXCreateContext(dis, vis, NULL, true);
    if (!glrc) {
         fprintf(stderr, "Cant't Create opengl context\n");
        return false;
    }
    // Verifying that context is a direct context
    if (!glXIsDirect(dis, glrc))
    {
        fprintf(stderr, "Indirect GLX rendering context obtained\n");
    }
    else {
         fprintf(stderr, "Direct GLX rendering context obtained\n");
    }
    glXMakeCurrent(dis, wnd, glrc);
Не отображает обьекты на ноутбуке16 окт. 201210:41#19
Anders333
> Может надо проект компилировать на компе с видяхой от АМД чтоб шейдер работал?
что ты имеешь ввиду под компиляцией? D3DXCompileShader* ? если это, то это делает Direct3D Runtime видюха не причем. Ты так и не посмотрел что тебе DXDebug пишет.
Помогите разобраться со стареньким форматом 3d модельки.12 окт. 201211:20#8
JanKetov
>Starship Troopers
http://en.wikipedia.org/wiki/Starship_Troopers_(video_game)
это она?
> 3DRipperDX не работает с 7 директом.
там Direct3D9

Как выбрать кучу примитивов11 окт. 201213:39#2
menand
Для ускорения бьешь фигуру на пространственное дерево. BHV,Octree,Kd-tree и т.д. Строишь бокс по области образованной мышью.Трассируешь бокс по дереву. Ищешь список примитивов попавших в бокс.
Улетает в ошибку на DrawIndexed(KernelBase.dll error)7 окт. 201221:53#9
Void12
>И я не понимаю, как относится вся эта куча вопросов к делу?
Потому что:
> Dx Debug молчит(использую встроенный в VS 2012).
Ели он молчит значит попортил память и т.д. Ищи ошибку в коде. _heapchk попробуй воткнуть везде.

Странная у тебя реакция на вопросы.

Улетает в ошибку на DrawIndexed(KernelBase.dll error)7 окт. 201220:52#6
Void12
Тема в разделе графика должна быть.
Начнем с самого плохого. pImmediateContext - корректный указатель? виртуальная таблица/методы не битые ?
pBoundsBuffer - тут все хорошо?
стартовый индекс не входит за пределы числа индексов?
у и классика, что же говорит Dx Debug для Direct3D10/Direct3D11? он стал еще лучше и еще разжевывает вплоть до несовпадения формата вершины и семантик в шейдере.
Еще опиши задачу подробнее, что рисуем ?
Если совсем плохо заливай минимальный проект.
bmfont - не могу вывести текст5 окт. 201216:19#29
war_zes
кстати да,fzr125 правильно написал у тебя только для 1 квадрата 2 треугольника корректно заполняются. поэтому на 4 нужно индексы умножать.
Ваши движки5 окт. 201215:27#45
bazhenovc
> Там размер очень разный
Как хочешь. Затрешь стек или еще чего нибудь, поведение неопределено будет.
>Ну бокс посчитать быстро...
Представь сотни моделей на уровне. Зачем что-то считать движку если это можно вынести в экспортер? Загрузчик должен быть простым и быстрым.Меньще аллоцировать память и меньше обращаться к файлу.
>Про header согласен, а чем формат не устроил?
Про бокс уже писал, много раз с файла зачитываешь. Все вершины для субмешей можешь загрузить 1 раз, далее хранить смешение вершин для каждого субмеша в общем вершинном буфере
Сейчас ты отдельно для субмешей делаешь буфер. и отдельно его читаешь.Аналогично для индексного.
Как лучше сделать:
1. Читаем header, там есть вся информация что дальше в файле.
2) Далее читаем массив боксов для каждого субмеша, массив смещений в вершином буфере, массив смещений в индексном.
Кстати, тут можно все за 1 вызов прочитать как uchar *, дальше посчитать указатели. sizeof(Box) * numSubmesh, 3 * sizeof(ushort) * numPlygons и т.д.
3) Далее читаем вершинный буфер и индексный буфер в VBO.

Итого получается 4 обращения к файлу, независимо от числа обращений к файлу. У тебя это зависит от числа субмешей.

Кстати признаю что мой формат для движка такой же как и у тебя, просто писал его лет 7 назад :). Все никак не переделаю...

>> я бы узлы сцены линейно в памяти хранил бы. Их вообще можно ограничить (до 1000) и опять таки хранить в статическом массиве. Ну нету смысла дробить так подробно сцену.
>Ну вот тут можно долго спорить :)
Подумай про оверхед на CPU когда ты будешь обходить дерево получай кешь промахи и глубокую рекурсию.

bmfont - не могу вывести текст5 окт. 201215:06#24
war_zes
Может индексы неверные. Кажется что один треугольник отсекается
 for(int i=0; i<m_numindex; i+=6)
  {
    indices[i] = i;
    indices[i+1] = i+1;
    indices[i+2] = i+2;
    indices[i+3] = i+2; // i
    indices[i+4] = i+3;
    indices[i+5] = i;     // i + 1
  }
и еще покажи как ты создаешь ID3D11RasterizerState через ID3D11Device::CreateRasterizerState и ставишь ли ты его через ID3D11DeviceContext::RSSetState.

Следующие темы >>

2001—2012 © GameDev.ru — Разработка игр