19,468
社区成员
发帖
与我相关
我的任务
分享
#include <GL/glew.h>
#include <GLFW/glfw3.h>
float TransDataValue2TexCoord(float _val)
{
return _val;
}
int main()
{
GLFWwindow* window;
if(!glfwInit())
return -1;
window = glfwCreateWindow(640,480, "Hello world",NULL, NULL);
if(!window)
{
glfwTerminate();
}
glfwMakeContextCurrent(window);
glewInit();
//Axis Colors 0->1
int axisColorNum = 4;
unsigned char axisColors[] = {
255, 0, 0, 255,
0, 255, 0, 255,
0, 255, 255, 255,
0, 0, 255, 255
};
//Perpare texture
GLuint axisTex ;
glGenTextures(1, &axisTex);
glBindTexture(GL_TEXTURE_1D, axisTex);
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_WRAP_S, GL_CLAMP);
glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_WRAP_T, GL_CLAMP);
glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexImage1D(GL_TEXTURE_1D,
0,
GL_RGBA,
axisColorNum,
0,
GL_RGBA,
GL_UNSIGNED_BYTE,
axisColors);
glEnable(GL_TEXTURE);
glEnable(GL_TEXTURE_1D);
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
while(!glfwWindowShouldClose(window))
{
//Draw Loop
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_TRIANGLES);
glTexCoord1f(TransDataValue2TexCoord(0.0f));
glVertex3f(-0.2f, -0.2f, 0.0f);
glTexCoord1f(TransDataValue2TexCoord(0.4f));
glVertex3f(0.2f, -0.2f, 0.0f);
glTexCoord1f(TransDataValue2TexCoord(0.9f));
glVertex3f(0, 0.4f, 0.0f);
glEnd();
//Draw Loop Finished
glfwSwapBuffers(window);
glfwPollEvents();
}
glDisable(GL_TEXTURE_1D);
glDisable(GL_TEXTURE);
glBindTexture(GL_TEXTURE_1D, 0);
glDeleteTextures(1, &axisTex);
glfwTerminate();
return 0 ;
}