Yannhhh 2021-03-10 22:25 采纳率: 0%
浏览 73

openGL三角形渲染fragmentshader

const char* vertexShaderSource =
"#version 330 core \n"
"layout(location = 0) in vc3 aPos \n"
"void main (){ \n"
" gl_Position = vec4(aPos.x,aPos.y,sPos.z,1.0);} \n";

const char* fragmentShaderSource =
"#version 330 core \n"
"out vec4 FragColor; \n"
"void main() { \n"
"FragColor = vec4(1.0f, 0.5f, 0.2f, 0.0f);} \n";
    
    unsigned int VAO;
	glGenVertexArrays(1, &VAO);
	glBindVertexArray(VAO);

	unsigned int VBO;
	glGenBuffers(1, &VBO);
	glBindBuffer(GL_ARRAY_BUFFER, VBO);
	glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices,GL_STATIC_DRAW);

	unsigned int vertexShader;
	vertexShader=glCreateShader(GL_VERTEX_SHADER);
	glShaderSource(vertexShader, 1, &fragmentShaderSource,NULL);
	glCompileShader(vertexShader);

	unsigned int fragmentShader;
	fragmentShader = glCreateShader(GL_FRAGMENT_SHADER);
	glShaderSource(fragmentShader, 1, &fragmentShaderSource, NULL);
	glCompileShader(fragmentShader);

	unsigned int shaderProgram;
	shaderProgram = glCreateProgram();
	glAttachShader(shaderProgram, vertexShader);
	glAttachShader(shaderProgram, fragmentShader);
	glLinkProgram(shaderProgram);

	glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(float), (void*)0);
	glEnableVertexAttribArray(0);

	while (!glfwWindowShouldClose(window))
	{
		processInput(window);

		glClearColor(0.3f, 0.33f, 0.2f, 1.0f);//状态设置函数
		glClear(GL_COLOR_BUFFER_BIT);//状态使用函数,使用当前状态清空颜色缓存

		glBindVertexArray(VAO);
		glUseProgram(shaderProgram);
		glDrawArrays(GL_TRIANGLES, 0, 3);

		glfwSwapBuffers(window);
		glfwPollEvents();
	}

按教程来的,前两段是着色器的硬编码,为什么片段着色器没起作用,还有,把上面字符串随便删改一点还是能画出三角形,不过一直没有颜色,是哪里出问题了吗

  • 写回答

1条回答

  • fortunely2 2024-03-02 19:57
    关注

    你有没有发现,vertexShaderSource 没被引用?而fragmentShaderSource 被引用了2次?

    评论

报告相同问题?

悬赏问题

  • ¥15 SpringMvc自定义Convert
  • ¥15 用python完成猜数字程序(初二学生)
  • ¥50 运行3d游戏会内存访问出错
  • ¥15 无法打开添加打印机 也装不了驱动,如何解决?
  • ¥15 【可追加酬金】求购php的saas多商户的CRM完整代码
  • ¥15 标题看内容,我需要能在octave中运行
  • ¥15 求缺陷检测三维点云数据集
  • ¥20 回答下面的分析题,复习题
  • ¥20 扫描出漏洞,需要升级jar包,但是找不到
  • ¥15 nx二次开发包容圆柱