저는 C++로 OpenGL 프로젝트를 작성 중이며 GLSL 셰이더 사용 방법을 배우고 싶습니다. 문제는, 내 자신의 쉐이더를 사용하지 않고 프로그램을 완성 할 수는 있지만, 필자는 스스로 작성하고 싶다. (이번에는 자신이로드하는 쉐이더가 없다. OpenGL이 디폴트인지 확실하지 않다.)OpenGL 및 GLSL을 사용하여 색상을 변경하는 방법 (C++)?
정점이 벡터에 저장되고 색상 값이 다른 벡터에 저장되는 이미지에 일련의 선을 그리려면 다음 코드를 사용하여 프레임이 업데이트 될 때마다 실행하고 렌더링합니다. 이를위한 GLUT 디스플레이 기능.
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_LINES);
vector<point2>::iterator it;
int c_index = 0;
for(it=points.begin(); it<points.end(); it++){
if(c_index % 2 == 0) //set color for every pair of points (each line)
glColor3f(colors[c_index/2][0], colors[c_index/2][1], colors[c_index/2][2]);
c_index++;
glVertex2f(it->x, it->y); //set vertex
}
glEnd();
glFlush();
이제 문제는 내가 다른 예제 프로그램에서 발견 된 쉐이더를 사용하려고하면, 색상이 모두 빨간색 (쉐이더가 명시 적으로 어떤 색깔을 정의하지 않더라도)이다. 또한 glColor3f는 아무 것도하지 않습니다.
제 질문은 셰이더를 사용하여 셰이더를 어떻게 사용할 수 있다고 가정할까요? 셰이더는 어떻게 보이고 어떻게로드합니까?
어떤 GLSL 버전을 사용하고 있습니까? (쉐이더 코드에서 #version을 사용하지 않는다면 아마도 GLSL 1.10 일 것입니다.) –
이 코드 스 니펫은 쉐이더와 관련이 없습니다. 우리가 알아야 할 코드는 셰이더 자체, 셰이더 개체 생성 코드 및 유니폼 및 특성 바인딩입니다. – datenwolf