我正在使用OpenGL渲染以窗口为中心的纹理。使用stb_image加载纹理,并且我使用函数<div class="select">
<select class="select-text">
<option disabled selected>Select User</option>
</select>
</div>
<div class="user-photo">
<img src="https://via.placeholder.com/200" alt="Placeholder">
</div>
<div class="details mdc-elevation--z3">
<p>
<span class="prop" data-age>Age :</span>
<span class="value" data-age-value>23</span>
</p>
<p>
<span class="prop" data-height>Height :</span>
<span class="value" data-height-value>169</span>
</p>
<p>
<span class="prop" data-weight>Weight :</span>
<span class="value" data-weight-value>68</span>
</p>
<p>
<span class="prop" data-gender>Gender :</span>
<span class="value" data-gender-value>Female</span>
</p>
<p>
<span class="prop" data-country>Country :</span>
<span class="value" data-country-value>Nigerian</span>
</p>
</div>
<button id="oracle" class="mdc-button">
Calculate BMI
</button>
<div id="outcome">
<h5 class="mdc-typography--headline5">
BMI
</h5>
<p class="bmi-text"></p>
</div>
渲染顶点。到目前为止,一切正常。调整使用glfw创建的窗口的大小时,我还使用一个回调函数来调整视口的大小,该回调函数以新的大小调用glDrawElements
。当我执行此操作时,我可以在正确的新位置看到纹理渲染,但是在相对于屏幕左下角的旧位置也可以闪烁。 左下方的纹理闪烁。
我是OpenGL的新手,基本上不知道是什么引起了问题。我已经搜索了其他存在类似问题的人,但是找不到与我自己的问题相符的内容。
这是加载图像的代码。
glViewport
这是调整大小的回调。
glGenTextures(1, &texture);
glBindTexture(GL_TEXTURE_2D, texture);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_MIRRORED_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_MIRRORED_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
int width, height, nrChannels;
GLubyte* data = stbi_load("texture.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
{
std::cout << "Failed to load image!" << std::endl;
}
stbi_image_free(data);
这是主循环:
void window_size_callback(GLFWwindow* window, int width, int height)
{
glViewport(0, 0, width, height);
}
我不想为程序粘贴所有代码,因为这很多。如果您需要一些我未包含的代码,请告诉我。