Количество треугольников GLScene

117
9

Есть ли способ найти общее количество треугольников в сцене? Я искал документацию и ссылки на классы, но не смог найти какую-либо процедуру или метод.

спросил(а) 2021-01-19T16:49:45+03:00 6 месяцев назад
1
Решение
110

Те, кто сказал, что вам нужно следить за добавленными объектами, являются правильными. Но те, кто сказал, что невозможно сосчитать треугольники в GLScene, ошибочны. Если вы отслеживаете все добавленные GlFreeForms в TStrings, вы можете подсчитать треугольники GLScene с этой небольшой функцией, которую я написал для этой цели:

function CountSceneTriangles(GLScene: TGlScene; SceneObjectList: TStrings): Integer;
var
I, ITriCount: Integer;
TempSceneObject: TGLBaseSceneObject;
begin
ITriCount := 0;

if (SceneObjectList.Count > 0) then
begin
for I := 0 to SceneObjectList.Count-1 do
begin
TempSceneObject:= Form1.GLScene1.FindSceneObject(SceneObjectList[I]));
if (TempSceneObject <> nil) then
begin
ITriCount := ITriCount + (TGLFreeForm(TempSceneObject).MeshObjects.TriangleCount);
end;
end;
end;

result := ITriCount;
end;

Просто передайте ему имя компонента TGLScene и отслеживаемый список всех добавленных объектов GLFreeForm:

procedure TForm1.FormCreate(Sender: TObject);
var
SObjList: TStrings;
begin
SObjList := TStrings.Create;
SObjList.Add('GlFreeForm1'); //examples of tracked TGlFreeForms
SObjList.Add('GlFreeForm2');
SObjList.Add('GlFreeForm3');
Form1.Caption := 'Triangles Count: ' + IntToStr(SObjList(Form1.GlScene1, SObjList));
SObjList.Free;
end;

Если вам нужно подсчитать треугольники для других объектов, кроме TGlFreeForm, вы можете расширить эту функцию по тому же принципу. Удачи.

ответил(а) 2021-01-19T16:49:45+03:00 6 месяцев назад
45

OpenGL не отслеживает какие-либо конкретные фигуры, которые вы, возможно, нарисовали. Вместо этого он отслеживает соединения между вершинами. Когда треугольник рисуется, OpenGL не обязательно знает, что это треугольник. Поэтому вам нужно реализовать свои собственные средства отслеживания фигур, которые вы рисуете, и вместо этого запросить свои собственные ссылки на фигуры. Помните, что рисунок в целом (2D или 3D) не основан на прямых фигурах. Могут быть очень абстрактные формы, которые даже не имеют имени, чтобы называть их.

ответил(а) 2021-01-19T16:49:45+03:00 6 месяцев назад
45

Насколько я знаю, нет способа запросить общее количество вершин или треугольников в сцене в OpenGL...

ответил(а) 2021-01-19T16:49:45+03:00 6 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема