Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > BlitzMax > 2D-программирование

Ответ
 
Опции темы
Старый 23.07.2011, 19:04   #1
xmarat
Нуждающийся
 
Регистрация: 11.07.2011
Сообщений: 64
Написано 2 полезных сообщений
(для 2 пользователей)
На весь экран - пропорции

Если сделать так:
Graphics 102476832 
То вся картинка растягивается на весь экран, и, если монитор 1366x768, все получается сплющенным. Я бы хотел сделать так, чтоб если монитор широкоформатный, то по краям появлялись черные полоски, если наоборот, то полоски сверху, или вообще не появляются если пропорции монитора соответствуют 1024x768(например 1280×1024), в общем как у плееров реализовано. Кто нибудь знает как это сделать? Заранее благодарен...
(Offline)
 
Ответить с цитированием
Старый 23.07.2011, 19:41   #2
Tadeus
Троллота
 
Регистрация: 09.07.2007
Сообщений: 1,829
Написано 554 полезных сообщений
(для 1,772 пользователей)
Ответ: На весь экран - пропорции

http://forum.boolean.name/showthread.php?p=174690 ?
(Offline)
 
Ответить с цитированием
Старый 23.07.2011, 20:36   #3
xmarat
Нуждающийся
 
Регистрация: 11.07.2011
Сообщений: 64
Написано 2 полезных сообщений
(для 2 пользователей)
Ответ: На весь экран - пропорции

Да. Вопрос аналогичный. Однако вопрос остался открытым.
(Offline)
 
Ответить с цитированием
Старый 24.07.2011, 00:16   #4
ffinder
Дэвелопер
 
Аватар для ffinder
 
Регистрация: 10.09.2007
Сообщений: 1,442
Написано 793 полезных сообщений
(для 1,460 пользователей)
Ответ: На весь экран - пропорции

Сообщение от xmarat Посмотреть сообщение
Я бы хотел сделать так, чтоб если монитор широкоформатный, то по краям появлялись черные полоски, если наоборот, то полоски сверху, или вообще не появляются если пропорции монитора соответствуют 1024x768(например 1280×1024)
CameraViewport camera,x,y,width,height

Параметры

camera - указатель камеры
x - координата x верхнего левого угла окна ( области просмотра)
y - координата y верхнего левого угла окна
width - ширина окна
height - высота окна Описание

Устанавливает позицию области просмотра камеры и ее размер.
Область просмотра камеры - 2D-область экрана, в которой отображаются рассматриваемые камерой объекты.
Установки области просмотра камеры позволяют Вам получать эффекты нескольких окон с разным видом и зеркал.



найдено тут: help.boolean.name в разделе 3d
(Offline)
 
Ответить с цитированием
Старый 24.07.2011, 00:18   #5
Randomize
[object Object]
 
Аватар для Randomize
 
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,361
Написано 2,473 полезных сообщений
(для 6,857 пользователей)
Ответ: На весь экран - пропорции

раздел BlitzMax!
юзать надо просто SetViewport
Формулу расчёта бери из данной ранее ссылки.
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 4090 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti
(Offline)
 
Ответить с цитированием
Старый 24.07.2011, 00:29   #6
xmarat
Нуждающийся
 
Регистрация: 11.07.2011
Сообщений: 64
Написано 2 полезных сообщений
(для 2 пользователей)
Ответ: На весь экран - пропорции

А как узнать какое разрешение у монитора?
(Offline)
 
Ответить с цитированием
Старый 24.07.2011, 01:08   #7
Randomize
[object Object]
 
Аватар для Randomize
 
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,361
Написано 2,473 полезных сообщений
(для 6,857 пользователей)
Ответ: На весь экран - пропорции

Extern "Win32"
    
Function GetSystemMetrics:Int(Axis:Int)
EndExtern
Local DesktopWidth
:Int GetSystemMetrics(0)
Local DesktopHeight:Int GetSystemMetrics(1)

Graphics(DesktopWidth,DesktopHeight
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 4090 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti
(Offline)
 
Ответить с цитированием
Старый 24.07.2011, 01:21   #8
xmarat
Нуждающийся
 
Регистрация: 11.07.2011
Сообщений: 64
Написано 2 полезных сообщений
(для 2 пользователей)
Ответ: На весь экран - пропорции

Эмм... А нет другого способа определить, а то я на Linux'е. Blitzmax не захотел это компилировать...
(Offline)
 
Ответить с цитированием
Старый 24.07.2011, 01:35   #9
ffinder
Дэвелопер
 
Аватар для ffinder
 
Регистрация: 10.09.2007
Сообщений: 1,442
Написано 793 полезных сообщений
(для 1,460 пользователей)
Ответ: На весь экран - пропорции

на линухе кури мануал про xlib
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Randomize (24.07.2011)
Старый 24.07.2011, 05:05   #10
Randomize
[object Object]
 
Аватар для Randomize
 
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,361
Написано 2,473 полезных сообщений
(для 6,857 пользователей)
Ответ: На весь экран - пропорции

Сообщение от ffinder Посмотреть сообщение
на линухе кури мануал про xlib
Опередил

Сообщение от xmarat Посмотреть сообщение
Эмм... А нет другого способа определить, а то я на Linux'е. Blitzmax не захотел это компилировать...
SuperStrict
Import 
"-lXrandr"
Import "screen.cpp"

Extern
    
Function GetScreenSize:Int(width:Int Var,height:Int Var) 
EndExtern

Local desktopWidth
:Int
Local desktopHeight
:Int

Local error
:Int GetScreenSize(widthheight
И собственно сишный сорс:
screen.cpp
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<unistd.h>
#include<X11/Xlib.h>
#include<X11/extensions/Xrandr.h>

extern "C" int GetScreenSize(int&,int&);  // Makes the function visable to other files

int GetScreenSize(intwidthintheight)
{

         
int num_sizes;
         
Rotation original_rotation;

         
Display *dpy XOpenDisplay(NULL);
         
Window root RootWindow(dpy0);
         
XRRScreenSize *xrrs XRRSizes(dpy0, &num_sizes);
         
//
         //     GET CURRENT RESOLUTION AND FREQUENCY
         //
         
XRRScreenConfiguration *conf XRRGetScreenInfo(dpyroot);
         
short original_rate XRRConfigCurrentRate(conf);
         
SizeID original_size_id XRRConfigCurrentConfiguration(conf, &original_rotation);

          
width xrrs[original_size_id].width;
          
height xrrs[original_size_id].height;
 
         
XCloseDisplay(dpy);
        return 
0
    } 
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 4090 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
xmarat (24.07.2011)
Старый 24.07.2011, 16:17   #11
xmarat
Нуждающийся
 
Регистрация: 11.07.2011
Сообщений: 64
Написано 2 полезных сообщений
(для 2 пользователей)
Ответ: На весь экран - пропорции

Спасибо огромное Randomize!!! Это то что нужно. Вопрос на будущее: при компиляции в windows, с этим(код ниже) будет аналогично?
Extern "Win32" 
    
Function GetSystemMetrics:Int(Axis:Int
EndExtern 
Local DesktopWidth
:Int GetSystemMetrics(0
Local DesktopHeight:Int GetSystemMetrics(1

Graphics(DesktopWidth,DesktopHeight
(Offline)
 
Ответить с цитированием
Старый 24.07.2011, 20:09   #12
Randomize
[object Object]
 
Аватар для Randomize
 
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,361
Написано 2,473 полезных сообщений
(для 6,857 пользователей)
Ответ: На весь экран - пропорции

Есть директивы:
?Win32
 Код для Windows
?MacOs
 Код для макоси
?Linux
  Код для линукса

__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 4090 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
xmarat (25.07.2011)
Старый 25.07.2011, 11:09   #13
xmarat
Нуждающийся
 
Регистрация: 11.07.2011
Сообщений: 64
Написано 2 полезных сообщений
(для 2 пользователей)
Ответ: На весь экран - пропорции

Не знал что так можно. Полезная вещь, буду знать. А как можно узнать размер дисплея в MacOS?
__________________
OS: Ubuntu Linux 11.04
CPU: Intel® Core™ 2 Quad Q9000 (2.0GHz, 1066MHz, 6Mb)
RAM: DDR2 SODIMM 4096 Мб
Video: NVIDIA® GeForce® GT240M 1024 Мб
(Offline)
 
Ответить с цитированием
Старый 25.07.2011, 12:00   #14
SBJoker
Злобный Админ
 
Аватар для SBJoker
 
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений
(для 9,330 пользователей)
Ответ: На весь экран - пропорции

Для макос должен пример для линукса подойти.
__________________
(Offline)
 
Ответить с цитированием
Старый 25.07.2011, 12:01   #15
Randomize
[object Object]
 
Аватар для Randomize
 
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,361
Написано 2,473 полезных сообщений
(для 6,857 пользователей)
Ответ: На весь экран - пропорции

Сообщение от xmarat Посмотреть сообщение
Не знал что так можно. Полезная вещь, буду знать. А как можно узнать размер дисплея в MacOS?
?Win32
    Import pub
.win32
    
Private
    
Extern
        
Function ReleaseDC(hwnd:Inthdc:Int)"Win32" 
    
End Extern
    
Public
?
MacOS
    Import 
"macscreen.c"
    
Private
    
Extern
        
Function CGDisplayCurrentMode:Byte Ptr(displayID:Byte Ptr)"MacOS"
        
Function CGGetActiveDisplayList:Byte Ptr(kMaxDisplays:Intdisplay:Byte PtrnumDisplays:Int Var)"MacOS"
        
Function MACOS_GetWidth:Int(mode:Byte Ptr)"C"
        
Function MACOS_GetHeight:Int(mode:Byte Ptr)"C"
        
Function MACOS_GetBPP:Int(mode:Byte Ptr)"C"
        
Function MACOS_GetHertz:Int(mode:Byte Ptr)"C"
    
End Extern 
    
Public
?
Linux
    Import brl
.graphics
?

Function 
GetDesktopMode:Int (width:Int Var, height:Int Var, depth:Int Var, hertz:Int Var)
    ?
win32
        Local hwnd
:Int GetDesktopWindow()
        
Local hdc:Int GetDC(hwnd)
        If 
hdc Null Then Return -1
        width  
GetDeviceCaps(hdcHORZRES)
        
height GetDeviceCaps(hdcVERTRES)
        
depth  GetDeviceCaps(hdcBITSPIXEL)
        
hertz  GetDeviceCaps(hdcVREFRESH)
        
ReleaseDC(hwnd,hdc)
    ?
MacOS
        Local display
:Byte Ptr[] = New Byte Ptr[1]
        
Local iMode:Byte Ptr Null
        Local iCount
:Int
        CGGetActiveDisplayList 1
displayiCount
        iMode  
CGDisplayCurrentMode(display[0])
        
width  MACOS_GetWidth(iMode)
        
height MACOS_GetHeight(iMode)
        
depth  MACOS_GetBPP(iMode)
        
hertz  MACOS_GetHertz(iMode)
    ?
Linux
        CountGraphicsModes
()
        
GetGraphicsMode (0,width,height,depth,hertz)
    ?
End Function

' Получать так : '
Local desktopWidth:IntdesktopHeight:IntdesktopDepth:IntdesktopHertz:Int
GetDesktopMode
(desktopWidthdesktopHeightdesktopDepthdesktopHertz)
Graphics(desktopWidthdesktopHeightdesktopDepthdesktopHertz
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 4090 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti

Последний раз редактировалось Randomize, 25.07.2011 в 15:16.
(Offline)
 
Ответить с цитированием
Эти 4 пользователя(ей) сказали Спасибо Randomize за это полезное сообщение:
impersonalis (25.07.2011), Tadeus (25.07.2011), xmarat (25.07.2011), Жека (25.07.2011)
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 23:33.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com