openGL初学笔记2:三角形环带

#include <GL/glew.h>
#include <GLFW/glfw3.h>
#include <iostream>


static unsigned int CompileShader(unsigned int type, std::string& source)
{
	unsigned int id = glCreateShader(type);
	const char* src = source.c_str();
	glShaderSource(id, 1, &src, NULL);
	glCompileShader(id);
	return id;
}

static unsigned int CreateShader(std::string& vertexSource, std::string& fragSource)
{
	unsigned int vertex = CompileShader(GL_VERTEX_SHADER, vertexSource);
	unsigned int fragment = CompileShader(GL_FRAGMENT_SHADER, fragSource);
	unsigned int program = glCreateProgram();
	glAttachShader(program, vertex);
	glAttachShader(program, fragment);
	glLinkProgram(program);
	glValidateProgram(program);
	glDeleteShader(vertex);
	glDeleteShader(fragment);
	return program;
}

int main(void)
{
	GLFWwindow* window;
	if (!glfwInit())
		return -1;
	window = glfwCreateWindow(640, 480, "OPENGL!", NULL, NULL);
	if (!window)
	{
		glfwTerminate();
		return -1;
	}
	//创建上下文
	glfwMakeContextCurrent(window);
	//创建上下文后要初始化glew
	GLenum err = glewInit();
	if (GLEW_OK != err)
	{
		std::cout << err << std::endl;
	}
	float vertex[10] =
	{
		-0.5f,-0.5f,
		-0.5f,0.0f,
		0.0f,0.0f,
		0.0f,0.5f,
		0.5f,0.5f

	};
//	int indices[6] =
//	{
//		0,1,2,
//		1,2,3
//	};
	unsigned int buffer;
//	unsigned int indicesbuffer;
	glGenBuffers(1, &buffer);
//	glGenBuffers(1,&indicesbuffer);
	glBindBuffer(GL_ARRAY_BUFFER, buffer);
	glBufferData(GL_ARRAY_BUFFER, 10 * sizeof(float), vertex, GL_STATIC_DRAW);
	glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, sizeof(float) * 2, 0);
//	glBindBuffer(GL_ELEMENT_ARRAY_BUFFER,indicesbuffer);
//	glBufferData(GL_ELEMENT_ARRAY_BUFFER,6*sizeof(int),indices,GL_STATIC_DRAW);
	glEnableVertexAttribArray(0);
	std::string vertexShader =
		"#version 330 core\n"
		"\n"
		"layout(location=0) in vec4 position;\n"
		"\n"
		"void main()\n"
		"{\n"
		"gl_Position=position;\n"
		"}\n";
	std::string flagShader =
		"#version 330 core\n"
		"\n"
		"layout(location=0) out vec4 color;\n"
		"void main()\n"
		"{\n"
		"color=vec4(1.0,0.0,0.0,1.0);\n"
		"}\n";
	static unsigned int shader = CreateShader(vertexShader, flagShader);
	glUseProgram(shader);
	while (!glfwWindowShouldClose(window))
	{
		glClear(GL_COLOR_BUFFER_BIT);
		//glDrawArrays(GL_TRIANGLES, 0, 3);
		glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); 
        glDrawArrays(GL_TRIANGLE_STRIP,0,10);
		glfwSwapBuffers(window);
		glfwPollEvents();
	}
	glDeleteProgram(shader);
	glfwTerminate();
	return 0;
}


三角形环带

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值