[Day4] 第一个矩形

抱歉,今天太累了,脑袋昏沉沉的,快速地写完一个矩形就快睡着了 (~O~),所以今天的内容会非常短...

今日目标

  • 画出第一个"矩"形

OpenGL是一个状态机

OpenGL的底层是一个状态机!

忘记是从哪边找到的,但这句话对我来说,间接了解了为什麽OpenGL的AP会是长这样。

最好理解的这句话的就是看OpenGL1.1的API,如果要话一个图形的话,会是这样写(没记错的话):

glBegin(GL_NICE_SHAPE);
// set the positons, color data here...
glEnd();

就像这样,一层层设定,最後在glEnd的时候绘出,虽说我使用的是OpenGL3,但也没有改变他的架构。

下面直接先贴上一段code:

// the first rectangle...
    static const float VERTICES[] = {
		0.5f,  0.5f,  	// top right
     	0.5f, -0.5f,  	// bottom right
    	-0.5f, -0.5f,  	// bottom left
    	-0.5f,  0.5f, 	// top left 
	};

	static const unsigned int INDICES[] = {
		0, 1, 3,   
    	1, 2, 3
	};

	unsigned int vbo, vao, ibo;

	glGenVertexArrays(1, &vao);
	glBindVertexArray(vao);

	glGenBuffers(1, &vbo);
	glBindBuffer(GL_ARRAY_BUFFER, vbo);
	glBufferData(GL_ARRAY_BUFFER, sizeof(VERTICES), VERTICES, GL_STATIC_DRAW);

	glGenBuffers(1, &ibo);
	glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, ibo);
	glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(INDICES), INDICES, GL_STATIC_DRAW);

        glVertexAttribPointer(RENDER_2D_CONTEXT.default_shader.attribs_locations[SHADER_ATTRIB_VEC2_POS], 2, GL_FLOAT, GL_FALSE, 2 * sizeof(float), (void*)0);
    glEnableVertexAttribArray(RENDER_2D_CONTEXT.default_shader.attribs_locations[SHADER_ATTRIB_VEC2_POS]);

	glUseProgram(RENDER_2D_CONTEXT.default_shader.id);
	glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_INT, 0);

	glBindVertexArray(0);

这个片段其实就是在实作:
如何产生Buffer存储顶点资料(Vertex Buffer Object)与顶点的绘画顺序(Element Buffer Object) -> 绑定资料
-> 驱动Shader -> 画在萤幕上。

诞生!第一个矩形


这边就直接把程过贴上来了,没多余的力气讲解我最甚麽了

参考

最後,这是今天的github


<<:  # Day 5 Supporting PMUs on RISC-V platforms (一)

>>:  D13: 工程师太师了: 第7话

WordPress 适用响应式(RWD)浏览图片灯箱效果外挂-WP Lightbox 2

WP Lightbox 2 是一款支援图片灯箱效果,点图放大附关闭功能的外挂,适合在响应式网页上使用...

DAY 25 Big Data 5Vs – Veracity(准确性) Athena(2)

如同近年被热烈讨论的 微服务架构* 与 CQRS架构*,AWS上推广的资料分析原则之一也是建议要将资...

DAY29 进行式--工作日志004

工作日志碎碎念 OH,我现在在实作的时候,常常翻我这次铁人赛的文章,因为这就是我的学习笔记麻 结果发...

[Day 01] 单元测试是什麽?为什麽要做单元测试?

[Day 01] 单元测试是什麽?为什麽要做单元测试? 相信只要在资讯业待过一阵子, 一定都会听过单...

Day14 用python写UI-聊聊Scale

今天迈入第14天了,耶~~~今天的内容我也是很喜欢,尤其是自己调整背景颜色的实作,真的觉得非常有趣~...