Я делаю небольшую трехмерную графическую игру / демо-версию для личного изучения. Я знаю d3d9 и немного о d3d11, но немного о opengl на данный момент, поэтому я собираюсь абстрагироваться от фактического рендеринга графики, чтобы мой граф сцены и все «выше» ему нужно было знать немного о том, как на самом деле рисовать графика. Я намереваюсь заставить его работать с d3d9, затем добавить поддержку d3d11 и, наконец, поддержку opengl. Так же, как учебное упражнение, чтобы узнать о трехмерной графике и абстракции.
Я пока не очень разбираюсь в opengl и не хочу, чтобы мой абстрактный интерфейс представлял что-то непростое для реализации в opengl. В частности, я смотрю на буферы вершин. В d3d они по сути являются массивом структур, но, глядя на интерфейс opengl, кажется, что это вершинные массивы. Однако, похоже, что они организованы довольно по-разному, где вам нужен отдельный массив для вершин, один для нормалей, один для координат текстуры и т. Д., И установите с помощью glVertexPointer, glTexCoordPointer и т. Д.
Я надеялся, что смогу реализовать интерфейс VertexBuffer во многом как у directx, но похоже, что в d3d у вас есть массив структур, а в opengl вам нужен отдельный массив для каждого элемента, что делает поиск общей абстракции довольно простым трудно сделать эффективным.
Есть ли способ использовать opengl аналогично Directx? Или какие-либо предложения о том, как создать абстракцию более высокого уровня, которая будет эффективно работать с обеими системами?