Окно C# OpenGL запаздываетC#

Место общения программистов C#
Ответить
Anonymous
 Окно C# OpenGL запаздывает

Сообщение Anonymous »

У меня возникла проблема: когда я создаю окно в OpenGL с использованием C#, мое окно начинает тормозить, и я не могу его использовать (не могу закрыть, свернуть, изменить размер и т. д.). И когда я навожу указатель мыши на окно, мой курсор становится синим колесиком, что означает, что он запаздывает. Как это исправить?
Стоит сказать, что я использую OpenGL и OpenTK для отображения и использования окна по своему усмотрению.
Это мой код для создания окна:
Во-первых, это класс «GameLoop», все, что связано с самой игрой, получено из этого класса, он содержит несколько абстрактных классов, которые я могу переопределить, поэтому он действительно полезен.

Код: Выделить всё

public abstract class GameLoop
{
public GameWindow window;
public Vector2Int windowSize = new Vector2Int(1280, 768);

public void Run()
{
OnInitialize();

WindowManager.CreateWindow(windowSize.x, windowSize.y, "Engine", out window);

OnLoad();

while (WindowManager.IsRunning)
{
OnUpdate();
OnRender();
}

OnCloseWindow();
}

protected abstract void OnInitialize();
protected abstract void OnLoad();
protected abstract void OnUpdate();
protected abstract void OnRender();
protected abstract void OnCloseWindow();
}

class RunGameLoop
{
static void Main()
{
GameLoop loop = new EngineWindow();
loop.Run();
}
}
Во-вторых, у меня есть этот метод в другом классе, который отвечает за создание самого окна:

Код: Выделить всё

public static void CreateWindow(int width, int height, string title, out GameWindow window)
{
window = new GameWindow(GameWindowSettings.Default, NativeWindowSettings.Default);

Vector2Int res = new Vector2Int(width, height);
//windowSize = res;

IsRunning = true;

window.CenterWindow(Vector2Int.ToVec2i(res));
window.Title = title;
}
И, наконец, у меня есть основной класс, в котором я могу использовать OpenGL и создать свой проект:

Код: Выделить всё

public class EngineWindow : GameLoop
{
protected override void OnInitialize()
{
Debug.WriteLine("On Initialize");
}

protected override void OnLoad()
{
GL.Enable(EnableCap.DepthTest);
GL.Enable(EnableCap.Lighting);

GL.ClearColor(Color.ToColor4(BackColor));

GL.Viewport(0, 0, windowSize.x, windowSize.y);

CreateMesh(cubeMesh);
}

protected override void OnUpdate()
{

}

protected override void OnRender()
{
GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit);

angle += Time.deltaTime;

SetupViewport(sceneCamera);
RenderMesh(cubeMesh);

ControllCamera(sceneCamera);

GL.CullFace(CullFaceMode.Back);

GL.Finish();

window.SwapBuffers();
}

protected override void OnCloseWindow()
{
Debug.WriteLine("Ended");
// Clean up
GL.DeleteProgram(program);
GL.DeleteBuffers(1, ref vbo);
GL.DeleteVertexArrays(1, ref vao);
}
}
Но проблема в том, что когда окно создано, оно запускается нормально, но становится очень медленным, и я не могу использовать окно.
В чем может быть проблема и как ее исправить?>

Подробнее здесь: https://stackoverflow.com/questions/751 ... is-lagging
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»