#1 Re: Работа с памятью, EXE » Вопрос по текстурам в памяти gta sa » 07-09-2013 11:50

DK22Pac, спасибо большое, очень помог!!! listener, тебе тоже спасибо! И если можно, объясните еще пару вещей:

CPatch::SetChar(0x7CF9CA, rwSTREAMMEMORY);

Если я правильно понял, то этой функцией ты подменил параметр type перед вызовом RwStreamOpen в
функции RtPNGImageRead.
(я в C++ не очень, я в основном на Delphi и ASM), и что за тип RwMemory, вернее из чего он(эта структура) состоит? Заранее спасибо!

#2 Re: Работа с памятью, EXE » Вопрос по текстурам в памяти gta sa » 06-09-2013 17:46

DK22Pac, я собираюсь отрисовать текстуру в игре на объекте(RwFrame). Про RtBmp я знаю(если ты об RtBMPImageRead), но я хотел бы загрузить картинку(массив пикселей) из памяти, возможно ли такое?

#3 Re: Работа с памятью, EXE » Вопрос по текстурам в памяти gta sa » 06-09-2013 15:26

Я посмотрел в IDA функцию создания растра RwRasterCreate но там в поле origPixels вообще ничего не записывается.
По поводу stride, в документации написано, что это линии растра байтов, но я так и не понял, что это значит. А как его корректно выставить?

#4 Re: Работа с памятью, EXE » Вопрос по текстурам в памяти gta sa » 06-09-2013 13:31

Спасибо! Инфу по RWG я читал. Прсто я пытаюсь загрузить пиксели из *.bmp файла, фомат задаю rwRASTERFORMAT8888 | rwRASTERPIXELLOCKEDWRITE(32 bit + write), и подставляю вместо указателя на *pixels свой. Но вместо моей картинки на объекте рисуется прозрачный фон:blush: Не знаешь в чём здесь проблема?

#5 Работа с памятью, EXE » Вопрос по текстурам в памяти gta sa » 06-09-2013 13:05

VladVegas
Replies: 8

Здравствуйте! У меня есть вопрос, помогите если в курсе.

Есть структура:

struct RwTexture
{
    RwRaster           *raster;
    RwTexDictionary    *txd;
    RwListEntry        TXDList;
    char               name[RW_TEXTURE_NAME_LENGTH];
    char               mask[RW_TEXTURE_NAME_LENGTH];
    unsigned int       flags;
    int                refs;
};

1-й параметр которой - указатель на структуру RwRaster;

struct RwRaster
{
    RwRaster        *parent;               // 0
    unsigned char   *pixels;
    unsigned char   *palette;              // 8
    int             width, height, depth;  // 12, 16 / 0x10, 20
    int             stride;                // 24 / 0x18
    short           u, v;
    unsigned char   type;
    unsigned char   flags;
    unsigned char   privateFlags;
    unsigned char   format;
    unsigned char   *origPixels;
    int             origWidth, origHeight, origDepth;
    void*           renderResource;
};

Собственно сам вопрос:
*pixels - это указатель на карту пикселей? Если да, то в кам формате они там хранятся?

Board footer

Powered by FluxBB