Почему QT6 не является рендерингом текстуры, которая в порядке на QT5. Код компилируется и работает без каких -либо предупреждений или ошибок, просто вместо этого отображается белая прямоугольник. Я запускаю это в Windows
Вот минимальный пример https://wetransfer.com/downloads/9ba8d3 ... -896929444. f054 & t_network = link & t_rid = z29vz2xllw9hdxromnwxmti0ndu3otu3ndyxmtawmzgwntq = & t_s = download_link & t_ts = 1739433755
код основан на В этом примере https://learnopengl.com/getting-started/textures
спасибо!
ps Если вы попробуете проект, вы должны изменить Line stbi_load ("c: /temp/wall.jpg", ... к вашему пути к изображению. < /p>
Вот основной код, который охватывает задачу: < /p>
void GLWidget::initializeGL()
{
initializeOpenGLFunctions();
m_shaderProgram.addShaderFromSourceCode(QOpenGLShader::Vertex, R"(
in vec3 aPos;
in vec3 aColor;
in vec2 aTexCoord;
varying vec3 ourColor;
varying vec2 TexCoord;
void main()
{
gl_Position = vec4(aPos, 1.0);
ourColor = aColor;
TexCoord = aTexCoord;//vec2(aTexCoord.x, aTexCoord.y);
}
)");
m_shaderProgram.addShaderFromSourceCode(QOpenGLShader::Fragment,R"(
in vec3 ourColor;
in vec2 TexCoord;
// texture sampler
uniform sampler2D texture1;
void main()
{
vec4 colorfromtexture = texture2D(texture1, TexCoord);
gl_FragColor = colorfromtexture;
}
)");
m_shaderProgram.link();
m_shaderProgram.bind();
unsigned int iVBO, iEBO;
float vertices[] = {
// positions // colors // texture coords
0.5f, 0.5f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, // top right
0.5f, -0.5f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, // bottom right
-0.5f, -0.5f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, // bottom left
-0.5f, 0.5f, 0.0f, 1.0f, 1.0f, 0.0f, 0.0f, 1.0f // top left
};
unsigned int indices[] = {
0, 1, 3, // first triangle
1, 2, 3 // second triangle
};
glGenBuffers(1, &iVBO);
glGenBuffers(1, &iEBO);
glBindBuffer(GL_ARRAY_BUFFER, iVBO);
glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, iEBO);
glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(indices), indices, GL_STATIC_DRAW);
// position attribute
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 8 * sizeof(float), (void*)0);
glEnableVertexAttribArray(0);
// color attribute
glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 8 * sizeof(float), (void*)(3 * sizeof(float)));
glEnableVertexAttribArray(1);
// texture coord attribute
glVertexAttribPointer(2, 2, GL_FLOAT, GL_FALSE, 8 * sizeof(float), (void*)(6 * sizeof(float)));
glEnableVertexAttribArray(2);
// load and create a texture
// -------------------------
glGenTextures(1, &texture);
glBindTexture(GL_TEXTURE_2D, texture); // all upcoming GL_TEXTURE_2D operations now have effect on this texture object
// set the texture wrapping parameters
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); // set texture wrapping to GL_REPEAT (default wrapping method)
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
// set texture filtering parameters
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
// load image, create texture and generate mipmaps
int width, height, nrChannels;
// The FileSystem::getPath(...) is part of the GitHub repository so we can find files on any IDE/platform; replace it with your own image path.
unsigned char *data = stbi_load("c:/temp/wall.jpg", &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
{
qDebug()
Подробнее здесь: https://stackoverflow.com/questions/794 ... englwidget
Почему текстура правильно отображается в QT5, но не в QT6, используя Qopenglwidget? ⇐ C++
Программы на C++. Форум разработчиков
1739464269
Anonymous
Почему QT6 не является рендерингом текстуры, которая в порядке на QT5. Код компилируется и работает без каких -либо предупреждений или ошибок, просто вместо этого отображается белая прямоугольник. Я запускаю это в Windows
Вот минимальный пример https://wetransfer.com/downloads/9ba8d348518621098f202e80e82d013320250213080224/f0c923?t_exp=1739692944&t_lsid=499440-c742-4b612-4b612-8.b746129694444&t_lsid=49940-c742-4b612-4b74b612-896929444. f054 & t_network = link & t_rid = z29vz2xllw9hdxromnwxmti0ndu3otu3ndyxmtawmzgwntq = & t_s = download_link & t_ts = 1739433755
код основан на В этом примере https://learnopengl.com/getting-started/textures
спасибо!
ps Если вы попробуете проект, вы должны изменить Line stbi_load ("c: /temp/wall.jpg", ... к вашему пути к изображению. < /p>
Вот основной код, который охватывает задачу: < /p>
void GLWidget::initializeGL()
{
initializeOpenGLFunctions();
m_shaderProgram.addShaderFromSourceCode(QOpenGLShader::Vertex, R"(
in vec3 aPos;
in vec3 aColor;
in vec2 aTexCoord;
varying vec3 ourColor;
varying vec2 TexCoord;
void main()
{
gl_Position = vec4(aPos, 1.0);
ourColor = aColor;
TexCoord = aTexCoord;//vec2(aTexCoord.x, aTexCoord.y);
}
)");
m_shaderProgram.addShaderFromSourceCode(QOpenGLShader::Fragment,R"(
in vec3 ourColor;
in vec2 TexCoord;
// texture sampler
uniform sampler2D texture1;
void main()
{
vec4 colorfromtexture = texture2D(texture1, TexCoord);
gl_FragColor = colorfromtexture;
}
)");
m_shaderProgram.link();
m_shaderProgram.bind();
unsigned int iVBO, iEBO;
float vertices[] = {
// positions // colors // texture coords
0.5f, 0.5f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, // top right
0.5f, -0.5f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, // bottom right
-0.5f, -0.5f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, // bottom left
-0.5f, 0.5f, 0.0f, 1.0f, 1.0f, 0.0f, 0.0f, 1.0f // top left
};
unsigned int indices[] = {
0, 1, 3, // first triangle
1, 2, 3 // second triangle
};
glGenBuffers(1, &iVBO);
glGenBuffers(1, &iEBO);
glBindBuffer(GL_ARRAY_BUFFER, iVBO);
glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, iEBO);
glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(indices), indices, GL_STATIC_DRAW);
// position attribute
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 8 * sizeof(float), (void*)0);
glEnableVertexAttribArray(0);
// color attribute
glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 8 * sizeof(float), (void*)(3 * sizeof(float)));
glEnableVertexAttribArray(1);
// texture coord attribute
glVertexAttribPointer(2, 2, GL_FLOAT, GL_FALSE, 8 * sizeof(float), (void*)(6 * sizeof(float)));
glEnableVertexAttribArray(2);
// load and create a texture
// -------------------------
glGenTextures(1, &texture);
glBindTexture(GL_TEXTURE_2D, texture); // all upcoming GL_TEXTURE_2D operations now have effect on this texture object
// set the texture wrapping parameters
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); // set texture wrapping to GL_REPEAT (default wrapping method)
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
// set texture filtering parameters
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
// load image, create texture and generate mipmaps
int width, height, nrChannels;
// The FileSystem::getPath(...) is part of the GitHub repository so we can find files on any IDE/platform; replace it with your own image path.
unsigned char *data = stbi_load("c:/temp/wall.jpg", &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
{
qDebug()
Подробнее здесь: [url]https://stackoverflow.com/questions/79435908/why-does-a-texture-render-correctly-in-qt5-but-not-in-qt6-using-qopenglwidget[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия