 |

10.04.2015, 19:49
|
|
Познающий
Регистрация: 09.07.2014
Сообщений: 42
С нами:
6233649
Репутация:
0
|
|
Hello, how can I fix the resolution problem?
Code:
Код:
Код:
pFont->Print("Hello, this is a test!", D3DCOLOR_ARGB(255, 255, 255, 0), 500, 500, false);
Screenshots:
1024x768:
1920x1080:

|
|
|

10.04.2015, 20:28
|
|
Флудер
Регистрация: 26.10.2013
Сообщений: 4,924
С нами:
6603505
Репутация:
183
|
|
int Resolution[2];
SF->getGame()->getScreenResolution(&Resolution[0], &Resolution[1]);
Font->Print("Hello, this is a test!", D3DCOLOR_ARGB(255, 255, 255, 0), Resolution[0] / 2, Resolution[1] / 2, false);
|
|
|

10.04.2015, 20:38
|
|
Флудер
Регистрация: 18.03.2013
Сообщений: 4,080
С нами:
6921957
Репутация:
183
|
|
in the center
char buf[32] = "Hello, this is a test!";
Font->Print(buf, D3DCOLOR_ARGB(255, 255, 255, 0), Resolution[0] / 2 - Font->DrawLenght(buf, false) / 2, Resolution[1] / 2 - Font->DrawHeight()/2, false);
|
|
|

10.04.2015, 20:39
|
|
Флудер
Регистрация: 18.03.2013
Сообщений: 4,080
С нами:
6921957
Репутация:
183
|
|
But u can use Game coordinates and then convert to Window coords/
|
|
|

10.04.2015, 20:52
|
|
Познающий
Регистрация: 09.07.2014
Сообщений: 42
С нами:
6233649
Репутация:
0
|
|
Сообщение от Dark_Knight
But u can use Game coordinates and then convert to Window coords/
What the game coordinates?
|
|
|

10.04.2015, 21:05
|
|
Познающий
Регистрация: 09.07.2014
Сообщений: 42
С нами:
6233649
Репутация:
0
|
|
My problem is:
I draw a box (my "coordinates")
Код:
Код:
SF->getRender()->DrawBorderedBox(1300, 700, 600, 300, D3DCOLOR_ARGB(255, 0, 0, 0), 3, D3DCOLOR_ARGB(50, 255, 255, 255));
But... how can convert for every screen resolution?
@SR_team
@Dark_Knight
/edit:
My solution.. (not the best  )
Код:
Код:
int Resolution[2];
SF->getGame()->getScreenResolution(&Resolution[0], &Resolution[1]);
X = Resolution[0] / 2;
Y = Resolution[1] / 2;
SF->getRender()->DrawBorderedBox(X + X - 610, Y + Y - 310, 600, 300, D3DCOLOR_ARGB(255, 0, 0, 0), 3, D3DCOLOR_ARGB(50, 255, 255, 255));
|
|
|

10.04.2015, 22:19
|
|
Участник форума
Регистрация: 18.03.2013
Сообщений: 104
С нами:
6921972
Репутация:
0
|
|
Код:
[CODE]
int resolution[2];
SF->getGame()->getScreenResolution(&resolution[0], &resolution[1]);
kX = resolution[0] / 640;
kY = resolution[1] / 448;
SF->getRender()->DrawBorderedBox(pos1 * kX, pos2 * kY, size1 * kX, size2 * kY, D3DCOLOR_ARGB(255, 0, 0, 0), 3, D3DCOLOR_ARGB(50, 255, 255, 255));
// 0
|
|
|

10.04.2015, 22:48
|
|
Флудер
Регистрация: 18.03.2013
Сообщений: 4,080
С нами:
6921957
Репутация:
183
|
|
[QUOTE="spiceman"]
Код:
[CODE]
int resolution[2];
SF->getGame()->getScreenResolution(&resolution[0], &resolution[1]);
kX = resolution[0] / 640;
kY = resolution[1] / 448;
SF->getRender()->DrawBorderedBox(pos1 * kX, pos2 * kY, size1 * kX, size2 * kY, D3DCOLOR_ARGB(255, 0, 0, 0), 3, D3DCOLOR_ARGB(50, 255, 255, 255));
// 0
|
|
|

11.04.2015, 00:10
|
|
Участник форума
Регистрация: 18.03.2013
Сообщений: 104
С нами:
6921972
Репутация:
0
|
|
Сообщение от Dark_Knight
Kidding?
что не так. находим коэффициент подобия, используя его, мы можем преобразовывать игровые координаты в координаты экрана.
ведь k = resolution / game_resolution = point / game_point
допустим, мое разрешение экрана 1440x900, мне нужно нарисовать в центре точку.
середина по горизонтали по игровым координатам = 320px
k = 1440 / 640 = 2.25
x = k * 320 = 720 ( 1440 / 2 = 720 )
1440 / 640 = 720 / 320 = 2.25
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|