OpenGL: наложение текстур с помощью вершинного шейдераC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 OpenGL: наложение текстур с помощью вершинного шейдера

Сообщение Anonymous »

У меня есть рабочая программа, в которой есть 3 сферы: одна с текстурой солнца, другая с текстурой земли и третья с текстурой луны. Однако эта программа не использует шейдеры. Он использует очень маленький собственный класс Vector, но это единственное, что является пользовательским. Все остальные части программы, а именно используемая матрица и способ создания текстур, выполняются посредством самого OpenGL и связанных с ним библиотек.
Я хотел бы преобразовать свой код, чтобы выполнить Вместо этого наложение текстур осуществляется через вершинный шейдер, чтобы я мог передавать значения во фрагментный шейдер для дальнейших расчетов освещения.
Это раздел моего кода, который в настоящее время генерирует сферы и применяет свои текстуры:

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

#include 

#ifdef __APPLE_CC__
#include 
#else
#include 
#endif

#include 
#include 
#include 
#include 
#include 

#define STB_IMAGE_IMPLEMENTATION
#include "stb_image.h"

using namespace std;

GLuint loadTexture(const char* path)
{
GLuint texture;
int width, height, nrChannels;
stbi_set_flip_vertically_on_load(true);
glGenTextures(1, &texture);

glBindTexture(GL_TEXTURE_2D, texture);
glActiveTexture(GL_TEXTURE_2D);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);

unsigned char *data = stbi_load(path, &width, &height, &nrChannels, 0);

if (data)
{
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, data);
glGenerateMipmap(GL_TEXTURE_2D);
}
else
{
cout 

Подробнее здесь: [url]https://stackoverflow.com/questions/79190824/opengl-texture-mapping-with-a-vertex-shader[/url]
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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