Сообщения на форуме пользователя Andrey (5 стр.)
winsock по я могу зайти на сервер,другие нет! | 30 окт. 2012 | 17:14 | #8 |
---|
>платформозависимый код?
Кроме WSAStartup,WSAGetLastError, и INVALID_SOCKET нету ничего платформо зависимого.
WunderProgrammer
пробуй WSAGetLastError + FormatMessage
DevIL || SOIL | 29 окт. 2012 | 10:12 | #11 |
---|
> Всем привет, не знаю какую библиотеку лучше использовать для загрузки текстур,
> подскажите пожалуйста что лучше использовать, какие плюсы и минусы этих
> библиотек?
Для редактора используй DevIL что-бы грузить все текстуры. Для движка в идеале вообще кроме DDS ВООБЩЕ ничего не нужно, хотя может и png для карты высот к примеру.PlayerDark
> PNG???
> TGA то, пожалуй, лучший формат для несжатых изображений.
Да ну. PNG лучше сжимается у него deflate сжатие, TGA это RLE.
TGA устаревший, редко поддерживается. PNG развивается постоянно, больше используется. Так что TGA в топку.
Mac OS, X Window System: XOpenDevice вылетает | 20 окт. 2012 | 0:12 | #0 |
---|
Получаю список устройств вызовом 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 Linux | 19 окт. 2012 | 14:26 | #8 |
---|
для создания контекста тебе нужен 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 в OpenGL | 18 окт. 2012 | 11:25 | #93 |
---|
> http://www.opengl.org/registry/specs/NV/gpu_program5.txt
ага. Только кто на asm будет писать? Если только через Cg получать это.
Установка компиляция OPENGL in Linux | 17 окт. 2012 | 13:35 | #2 |
---|
>как поставить хардварные библиотеки - чтобы все работало железно и родное было?
дрова.
>под линуском вижу это уже есть в 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 окт. 2012 | 10:41 | #19 |
---|
> Может надо проект компилировать на компе с видяхой от АМД чтоб шейдер работал?
что ты имеешь ввиду под компиляцией? D3DXCompileShader* ? если это, то это делает Direct3D Runtime видюха не причем. Ты так и не посмотрел что тебе DXDebug пишет.
Помогите разобраться со стареньким форматом 3d модельки. | 12 окт. 2012 | 11:20 | #8 |
---|
>Starship Troopers
http://en.wikipedia.org/wiki/Starship_Troopers_(video_game)
это она?
> 3DRipperDX не работает с 7 директом.
там Direct3D9
Как выбрать кучу примитивов | 11 окт. 2012 | 13:39 | #2 |
---|
Для ускорения бьешь фигуру на пространственное дерево. BHV,Octree,Kd-tree и т.д. Строишь бокс по области образованной мышью.Трассируешь бокс по дереву. Ищешь список примитивов попавших в бокс.
Программная триангуляция - есть ли нормальные библиотеки на С++? | 9 окт. 2012 | 12:39 | #2 |
---|
http://www.qhull.org
Улетает в ошибку на DrawIndexed(KernelBase.dll error) | 7 окт. 2012 | 21:53 | #9 |
---|
>И я не понимаю, как относится вся эта куча вопросов к делу?
Потому что:
> Dx Debug молчит(использую встроенный в VS 2012).
Ели он молчит значит попортил память и т.д. Ищи ошибку в коде. _heapchk попробуй воткнуть везде.
Странная у тебя реакция на вопросы.
Улетает в ошибку на DrawIndexed(KernelBase.dll error) | 7 окт. 2012 | 20:52 | #6 |
---|
Тема в разделе графика должна быть.
Начнем с самого плохого. pImmediateContext - корректный указатель? виртуальная таблица/методы не битые ?
pBoundsBuffer - тут все хорошо?
стартовый индекс не входит за пределы числа индексов?
у и классика, что же говорит Dx Debug для Direct3D10/Direct3D11? он стал еще лучше и еще разжевывает вплоть до несовпадения формата вершины и семантик в шейдере.
Еще опиши задачу подробнее, что рисуем ?
Если совсем плохо заливай минимальный проект.
bmfont - не могу вывести текст | 5 окт. 2012 | 16:19 | #29 |
---|
кстати да,fzr125 правильно написал у тебя только для 1 квадрата 2 треугольника корректно заполняются. поэтому на 4 нужно индексы умножать.
Ваши движки | 5 окт. 2012 | 15:27 | #45 |
---|
> Там размер очень разный
Как хочешь. Затрешь стек или еще чего нибудь, поведение неопределено будет.
>Ну бокс посчитать быстро...
Представь сотни моделей на уровне. Зачем что-то считать движку если это можно вынести в экспортер? Загрузчик должен быть простым и быстрым.Меньще аллоцировать память и меньше обращаться к файлу.
>Про header согласен, а чем формат не устроил?
Про бокс уже писал, много раз с файла зачитываешь. Все вершины для субмешей можешь загрузить 1 раз, далее хранить смешение вершин для каждого субмеша в общем вершинном буфере
Сейчас ты отдельно для субмешей делаешь буфер. и отдельно его читаешь.Аналогично для индексного.
Как лучше сделать:
1. Читаем header, там есть вся информация что дальше в файле.
2) Далее читаем массив боксов для каждого субмеша, массив смещений в вершином буфере, массив смещений в индексном.
Кстати, тут можно все за 1 вызов прочитать как uchar *, дальше посчитать указатели. sizeof(Box) * numSubmesh, 3 * sizeof(ushort) * numPlygons и т.д.
3) Далее читаем вершинный буфер и индексный буфер в VBO.
Итого получается 4 обращения к файлу, независимо от числа обращений к файлу. У тебя это зависит от числа субмешей.
Кстати признаю что мой формат для движка такой же как и у тебя, просто писал его лет 7 назад :). Все никак не переделаю...
>> я бы узлы сцены линейно в памяти хранил бы. Их вообще можно ограничить (до 1000) и опять таки хранить в статическом массиве. Ну нету смысла дробить так подробно сцену.
>Ну вот тут можно долго спорить :)
Подумай про оверхед на CPU когда ты будешь обходить дерево получай кешь промахи и глубокую рекурсию.
bmfont - не могу вывести текст | 5 окт. 2012 | 15:06 | #24 |
---|
Может индексы неверные. Кажется что один треугольник отсекается
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 }