glEnable(GL_CULL_FACE | GL_DEPTH_TEST);出现纹理重叠现象
openGL系列文章目录
文章目录
openGL系列文章目录前言一、问题二、问题解决主要代码源码下载
前言
今天遇到一个奇怪的问题,绘制圆环体。在给圆环体问题贴图的时候感觉总有问题,纹理有重叠。
如果代码是:
glEnable(GL_CULL_FACE | GL_DEPTH_TEST);
一、问题
可以看到左边的圆环纹理有扭曲
二、问题解决
把
glEnable(GL_CULL_FACE | GL_DEPTH_TEST);
改成
glEnable(GL_CULL_FACE);glEnable(GL_DEPTH_TEST);
主要代码
#include "glew/glew.h"#include "glfw/glfw3.h"#include "glm/glm.hpp"#include "glm/gtc/matrix_transform.hpp"#include "glm/gtc/type_ptr.hpp"#include "Utils.h"#include "Torus.h"#include "SOIL2/SOIL2.h"#include "camera.h"#include #include #include using namespace std;static const float pai = 3.1415926f;float toRadins(float degress){ return (degress * 2.f * 3.14159f / 360.f);}static const int numVAOs = 1;static const int numVBOs = 4;float cameraX = 0.f, cameraY = 0.f, cameraZ = 0.f;float torusLocX = 0.f, torusLocY = 0.f, torusLocZ = 0.f;GLuint renderingProgram = 0;GLuint vao[numVAOs] = { 0 };GLuint vbo[numVBOs] = { 0 };static const int screen_width = 1920;static const int screen_height = 1080;GLuint torusTextureId = 0;float rotAmt = 0.f; //Y轴旋转量GLuint mvLoc = 0;GLuint projLoc = 0;int width, height;float aspect = 0.f;glm::mat4 mMat(1.f), vMat(1.f), pMat(1.f), mvMat(1.f);Torus myTorus(0.5f, 0.2f, 48);Camera camera(glm::vec3(0.f, 0.f, 5.f));float deltaTime = 0.f;float lastFrame = 0.f;GLboolean keys[1024] = { GL_FALSE };GLboolean firstMouse = GL_TRUE;float lastLocX = 0.f;float lastLocY = 0.f;void processKeyInput(GLFWwindow* window);void setupVertices(void){ vector ind = myTorus.getIndices(); //获取顶点索引 vector vert = myTorus.getVertices(); //得到每个顶点,其中任一个顶点都包含(x, y, z) vector tex = myTorus.getTexCoords(); vector norm = myTorus.getNormals(); vector sTang = myTorus.getStangents(); vector tTang = myTorus.getTtangents(); vector pValues; //顶点位置 vector tValues; //纹理坐标 vector nValues; //法线坐标 for (int i=0; i源码下载
源码下载地址
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
暂时没有评论,来抢沙发吧~