{{notification.text}}

MirGames

17.02.10 16:17
0
DRON
а как с такой картинки анимацию сделать?
в двиге это через матрицу делается или процедура какая есть7
Отредактировано: 17.02.10 16:33
#881
30.03.12 19:18
0
Народ, выручайте! Идея стынет)
#882
30.03.12 22:22
0
Код
type
  TPixelRGB=packed record R, G, B: Byte; end; //порядок зависит от движка, может быть и BGR
  TPixelRGBA=packed record R, G, B, A: Byte; end; //аналогично
  TPixelsRGB=array[0..MaxInt div SizeOf(TPixelRGB) - 1] of TPixelRGB;
  TPixelsRGBA=array[0..MaxInt div SizeOf(TPixelRGBA) - 1] of TPixelRGBA;

  TPixel=TPixelRGB; //Ну или RGBA, зависит от формата текстуры, с которой работать
  TPixels=TPixelsRGB;

var
  P: Pointer;
  Pixels: ^TPixels; absolute P; //По сути просто алиас, чтобы избавиться от приведения типов)
  Pixel: TPixel;

GetMem(P, TexWidth*TexHeight*SizeOf(TPixel));
Texture.GetPixelData(P);
Pixel:=Pixels[x+y*TextureWidth];
#883
30.03.12 23:07
0
Vga
absolute ?! :huh:
первый раз вижу)
Большущее спасибо. Буду пробовать.
#884
30.03.12 23:36
0
Можно заменить на более понятное Pointer(Pixels):=P; после getmem. Но с этой директивой P и Pixels будут физически одной и той же переменной.
#885
lis84
13.04.12 07:02
0
(Ходят кругами с транспарантами)
directX!!! directX!!! directX!!!

=)
#886
13.04.12 13:51
0
лучше ходить с "DGLE хоть в каком-нибудь работающем виде!" и "Даёшь релиз!"
#887
irwin_noteam
13.04.12 15:10
0
Цитата(Dy1 @ 13.04.2012 - 11:51) [snapback]110252[/snapback]

лучше ходить с "DGLE хоть в каком-нибудь работающем виде!" и "Даёшь релиз!"

да, где обещанные плюшки?
#888
13.04.12 17:01
0
Цитата(Dy1 @ 13.04.2012 - 11:51) [snapback]110252[/snapback]

лучше ходить с "DGLE хоть в каком-нибудь работающем виде!" и "Даёшь релиз!"


Согласен. Мне так например ни directx рендер, ни поддержка других платформ от движка, в котором не реализованы даже основные необходимые методы хотя бы для одной ну нафиг не нужна
#889
Программир Всия Руси!
15.04.12 00:28
0
Цитата
Мне так например ни directx рендер, ни поддержка других платформ от движка, в котором не реализованы даже основные необходимые методы хотя бы для одной ну нафиг не нужна

ДАвайте список хотелок. Пока я активно над двигом работаю, не затратные но не запланированные мною вещи могут легко попасть в релиз.
#890
15.04.12 02:57
0
DRON
Да мне б например хотелось элементарно отрендерить картиночку по маске. К сожалению пока работает фигово.
#891
Программир Всия Руси!
15.04.12 03:24
0
mgames
Что фигово, чего не хватает, как надо?
Конкретики пжалуйста. А то так на всегда и останется как есть.
#892
gamecreator
15.04.12 08:06
0
можно ли вывести многострочный текст средствами движка?
#893
Программир Всия Руси!
15.04.12 11:21
0
gamecreator
Да либо через GUI либо самому придется на строки бить. Ф-я в 5 строк кода. Опять таки часто такое спрашивают, могу ф-ю такую в двиг сделать, мне не сложно )
#894
Хранитель Флейма
15.04.12 11:32
0
Цитата
Ф-я в 5 строк кода

Да ты нупь, ваще в одну можно уложиться! = )
#895
15.04.12 15:55
0
Цитата(DRON @ 15.04.2012 - 01:24) [snapback]110257[/snapback]

mgames
Что фигово, чего не хватает, как надо?
Конкретики пжалуйста. А то так на всегда и останется как есть.


Конкретика это пожалуйста )

Вот у меня маска:
Изображение

Код

Mask.Draw;

Render2D.SetBlendMode( EBF_MASK );

Texture.Draw;

Render2D.SetBlendMode( EBF_NORMAL );


Итог: текстура рисуется по маске, но видны тёмные участки этой маски. Если перед отрисовкой маски написать Render2d.SetBlendMode( EBF_BLACK ), то рисоваться будет совсем не правильно. Аналогично, если на месте чёрного поставить альфу.
Отредактировано: 15.04.12 16:07
#896
gamecreator
15.04.12 17:08
0
Цитата(DRON @ 15.04.2012 - 08:21) [snapback]110259[/snapback]
могу ф-ю такую в двиг сделать, мне не сложно )
лучше сделать это встроенным функционалом в существующие функции IBitmapFont. сейчас для многострочных строк GetTextDimensions возвращает мусор.

как оказалось позже, GetTextDimensions всегда возвращает мусор для ширины
Отредактировано: 15.04.12 17:09
#898
Программир Всия Руси!
16.04.12 02:07
0
mgames
Че то я даже с ходу решения и не знаю если честно...
#899
25.04.12 22:28
0
DRON
Я всё ещё в ожидании)

----
Вообще сейчас мне надо как то нарисовать квадратную текстуру с полупрозрачными углами.
Так что может есть и другой способ
Отредактировано: 25.04.12 22:44
#900
Kerbo
28.04.12 00:03
0
Решил написать отдельную функцию для загрузки текстур, чтобы в void CALLBACK Init вместо множества строчек p_res_man->Load(.....) была только одна. И натолкнулся на небольшую проблему - если функция загрузки текстур находится в отельном файле *.cpp и *.h, то текстуры не грузятся. Проблема исчезает, если функцию объявлять в main. Это, конечно, не критично, функция нужна только для эстетики. Но хотелось бы разобраться. )
Пример кода:

------------------main.cpp-------------------------------

#include <Windows.h>
#include <string>
#include <stdio.h>

#include "MG_Functions.h"

using namespace std;

//include DGLEngine2 header
#include "DGLE2.h"
#include "DGLE2_EXT.h"
using namespace DGLE2;

ENG_DYNAMIC_FUNC //This define must be included once to main CPP file of application

#define APP_CAPTION "Test Textures"
#define DLL_PATH "DGLE2.dll"

const int resolution_WIDTH = 800;
const int resolution_HEIGHT = 600;

IEngineCore *pEngineCore = NULL; // Двиг
IInput *pInput = NULL; // Устройства управления
IRender2D *pRender2D = NULL; // Графики

int counter = 100;

void MG_LoadTexture(IResourceManager* p_res_man)
{
p_res_man->Load(RESOURCE_PATH"Textures\\Canvas\\Romb_Empty.png",(IEngBaseObj*&)pRombEmpty,TEXTURE_LOAD_DEFAULT_2D);
// И будет ещё много-много загрузок...
}

void CALLBACK Init(void *pParametr)
{
pEngineCore->ConsoleVisible(true);

IResourceManager *p_res_man1;
IRender *p_render;


pEngineCore->GetSubSystem(ESS_RESOURCE_MANAGER,(IEngineSubSystem *&)p_res_man1);
pEngineCore->GetSubSystem(ESS_INPUT,(IEngineSubSystem *&)pInput);
pEngineCore->GetSubSystem(ESS_RENDER,(IEngineSubSystem *&)p_render);

p_render->GetRender2D(pRender2D);

// If resolution will be higher it won't effect game.
pRender2D->SetResolutionCorrection(resolution_WIDTH,resolution_HEIGHT);
// Setting batch mode to auto, it's a good descision for any 2D application.
pRender2D->BatchRender(BM_AUTO);
pInput->Configure(ICF_DEFAULT);
p_render->SetClearColor(TColor4(100,100,100,0));

MG_LoadTexture1(p_res_man1); //!!!!!!!!!!

}

void CALLBACK Free(void *pParametr)
{
/* Do nothing */
}

void CALLBACK Process(void *pParametr)
{

counter++;
}

void CALLBACK Render(void *pParametr)
{
pRender2D->Begin2D();

pRender2D->DrawSpriteS(pRombEmpty, TPoint2(100.0,100.0), TPoint2(200,200), 0, EF_BLEND);

pRender2D->End2D();

}

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
if(GetEngine(DLL_PATH,pEngineCore))
{
if(SUCCEEDED(pEngineCore->InitializeEngine(NULL,APP_CAPTION,TEngWindow(resolution_WIDTH,resolution_HEIGHT,false,false,1,EWF_ALLOW_SIZEING))))
{
pEngineCore->AddProcedure(EPT_INIT, &Init);
pEngineCore->AddProcedure(EPT_FREE, &Free);
pEngineCore->AddProcedure(EPT_PROCESS, &Process);
pEngineCore->AddProcedure(EPT_RENDER, &Render);
pEngineCore->StartEngine();
}
FreeEngine();
}

else MessageBox(NULL,(LPCWSTR)"Couldn't load \""DLL_PATH"\"!", (LPCWSTR)"Error", MB_OK | MB_ICONERROR | MB_SETFOREGROUND);

return 0;
}

--------------------------MG_Functions.h-----------------------------

#ifndef _MG_FUNCTIONS_H_
#define _MG_FUNCTIONS_H_

//include DGLEngine2 header
#include "DGLE2.h"
#include "DGLE2_EXT.h"

using namespace DGLE2;

#ifdef _DEBUG
# define RESOURCE_PATH "Resources\\"
#else
# define RESOURCE_PATH "Resources\\"
#endif

static ITexture *pRombEmpty;

void MG_LoadTexture1(IResourceManager* p_res_man);

#endif

--------------------------MG_Functions.cpp-----------------------------

#include "MG_Functions.h"

void MG_LoadTexture1(IResourceManager* p_res_man)
{
p_res_man->Load(RESOURCE_PATH"Textures\\Canvas\\Romb_Empty.png",(IEngBaseObj*&)pRombEmpty,TEXTURE_LOAD_DEFAULT_2D);
// И будет ещё много-много загрузок...
}


-----------------------------------------------------------------------------------------
Если в main строчку MG_LoadTexture1(p_res_man1); заменить на MG_LoadTexture(p_res_man1); то всё начинает работать. Если оставить MG_LoadTexture1(p_res_man1); выводится белый квадрат.
Отредактировано: 28.04.12 00:05
#{{post.Index}}
{{post.Author.Login}}
{{post.CreatedDate | date:'dd.MM.yy HH:mm'}}
{{post.VotesRating}}
Отредактировано: {{post.UpdatedDate | date:'dd.MM.yy HH:mm'}}