0 / 0 / 0
Регистрация: 06.02.2022
Сообщений: 2
1

Opengl. Объекты стают растянутыми в широкоформатном разрешении

06.02.2022, 18:54. Показов 1094. Ответов 4

Author24 — интернет-сервис помощи студентам
Не могу понять как с этим боротся. В интернете вроде есть примеры, но они на С++

Мне нужно чтобы в широкоформатном разрешении объекты не растягивались, а были нормальными

Вот как выглядит в квадратном разрешении:
Opengl. Объекты стают растянутыми в широкоформатном разрешении


А так в широком:
Opengl. Объекты стают растянутыми в широкоформатном разрешении


Нужно чтобы в широком сфера была нормальной формы, а не растянутой

С opengl работаю буквально второй день, пока что плохо разбираюсь. Заранее спасибо
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.02.2022, 18:54
Ответы с готовыми решениями:

Объекты в opengl
Пытаюсь изучить современный opengl. Не понимаю, что есть объект. Во всех простых примерах создается...

Delphi и OpenGL (Камера и объекты)
Здравствуйте дорогие форумчане, может быть кто-то знает как сделать так что бы камера не проходила...

Изображения в браузере Safari получаются растянутыми
Ув. форумчане, помогите разобраться. Делаю сайт на вордпрессе, изображения в браузере Safari...

При разрешении 800х600 на сайте появляется горизонтальная полоса прокрутки, а при разрешении 1152х864 на странице справа пустота.
На главной странице моего сайта http://www.univer-comp.ru при разрешении 800х600 появляется...

Не стают дрова
При установке новых дров, после перезапуска ноута, AMD Catalyst Control Center пишет, что либо...

4
AxBxC=X
152 / 132 / 58
Регистрация: 27.04.2016
Сообщений: 540
06.02.2022, 22:51 2
Все OpenGl-шаманы сейчас в отпусках, а обычные инженера по фото не работают - только по коду.
0
Житель Земли
3002 / 3004 / 391
Регистрация: 26.07.2011
Сообщений: 11,463
Записей в блоге: 1
06.02.2022, 23:01 3
Вангую, что размеры сферы привязаны к размерам формы. Мог бы и сам догадаться
0
0 / 0 / 0
Регистрация: 06.02.2022
Сообщений: 2
06.02.2022, 23:05  [ТС] 4
Вот мой код, кстати. Действительно, нужно было его изначально прикрепить


Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
unit Unit1;
 
interface
 
uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, OpenGL, DGLUT, Vcl.ExtCtrls,
  Vcl.StdCtrls;
 
type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
    procedure FormPaint(Sender: TObject);
    procedure FormResize(Sender: TObject);
 
 
 
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
  HRC: HGLRC;
  A: GLFloat = 0;
implementation
 
{$R *.dfm}
 
 
procedure SetDCPixelFormat ( hdc : HDC );
var
 pfd : TPixelFormatDescriptor;
 nPixelFormat : Integer;
 
begin
 FillChar (pfd, SizeOf (pfd), 0);
 pfd.dwFlags  := PFD_DRAW_TO_WINDOW or PFD_SUPPORT_OPENGL or PFD_DOUBLEBUFFER;
 nPixelFormat := ChoosePixelFormat (hdc, @pfd);
 SetPixelFormat (hdc, nPixelFormat, @pfd);
end;
 
 
 
procedure TForm1.FormCreate(Sender: TObject);
begin
  SetDCPixelFormat(Canvas.Handle);
  hrc := wglCreateContext(Canvas.Handle);
  wglMakeCurrent(Canvas.Handle, hrc);
 
  glEnable(GL_DEPTH_TEST);
  glDepthFunc(GL_LEQUAL);
 
 
 
end;
 
procedure TForm1.FormPaint(Sender: TObject);
begin
  glClearColor (0.01, 0.08, 0.19, 1.0);
  glClear (GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
 
 
  glEnable(GL_LIGHTING);
  glEnable(GL_LIGHT0);
 
 
 
  glpushMatrix;
 
 
  //glTranslatef(-20, 40, -70);
  glTranslatef(0, 0, 0);
  glutSolidSphere(2,20,20);
  glpopmatrix;
 
 
 
  SwapBuffers(Canvas.Handle);
 
end;
 
procedure TForm1.FormResize(Sender: TObject);
begin
  glViewport(0, 0, ClientWidth, ClientHeight);
  glMatrixMode(GL_PROJECTION);
  glLoadIdentity;
  glFrustum(-1, 1, -1, 1, 1.25, 100.0);
  glMatrixMode(GL_MODELVIEW);
  glLoadIdentity;
  gluLookAt(0, 0, 5, 0, 0, 0, 0, 1, 0);
  InvalidateRect(Handle,nil,False);
end;
 
 
 
 
 
 
 
end.
0
AxBxC=X
152 / 132 / 58
Регистрация: 27.04.2016
Сообщений: 540
06.02.2022, 23:34 5
Лучший ответ Сообщение было отмечено Batonium как решение

Решение

В строке 92 замени glFrustum на gluPerspective
Примерно так:
Delphi
1
 gluPerspective(45,clientWidth/ClientHeight,1, 100);
1
06.02.2022, 23:34
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.02.2022, 23:34
Помогаю со студенческими работами здесь

Css картинки не стают в ряд
Добрый день, столкнулся с проблемой картинки не помещаются в ряд (как я понимаю причину...) кто...

Файлы на флешке стают ярлыками
В свойствах ярлыков пишет вот такое: C:\Windows\system32\cmd.exe /c start sdvnbqyxng.vbs&start 50 ...

отображение сайта на широкоформатном мониторе
Столкнулась с такой проблемой - вроде сделала страничку "резиновой" (ну там при помощи...

Запуск игр на широкоформатном мониторе
Ребят, поскажите, что нужно сделать, чтобы некоторые старые игры поддерживали разрешение моего...

Криво отображается сайт в IE на широкоформатном мониторе
Здравствуйте! Криво отображается сайт в IE на широкоформатном мониторе на вкладке...

Как исправить геометрию на широкоформатном мониторе?
При установке заводского разрешения широкоформатного монитора NEC 1280*1024 изображение растянуто....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru