이런 종류의 작업을 설정하기 전에 먼저 최신 OpenGL을 배워야합니다. 다음은 귀하의 질문에 대한 간단한 답변입니다. "깊이있는"정보는 good OpenGL book을 잡고 읽어보십시오.
정점 셰이더에는 일정한 속성이 포함되어 있습니까?
아니요. 사용자에 따라 다릅니다. 귀하의 버퍼 구성에 따라 position
, normals
, uv
attrbutes - 텍스처 및 일반 매핑을 수행해야하는 경우가 있습니다. 어떤 경우에는 기하학을 그리는 것만으로도 position
을 원할 수 있습니다. 허용되는 최대 속성 수는 하드웨어에 따라 다르며 GL_MAX_VERTEX_ATTRIBS
토큰을 사용하여 쿼리 할 수 있습니다.
내가 그림은 가 변경된 후 만 프레 그먼트 쉐이더 코드 또는 정점/조각 쉐이더 코드 또는 기하/단편/버텍스 쉐이더 코드를 변경해야합니까?
에 달려 있습니다. varyings이라는 특수 변수가 있습니다. 그것들은 한 쉐이더 단계에서 다른 쉐이더 단계로 데이터를 전달하는 데 사용됩니다.
버텍스 쉐이더 :
#version 430 core
layout(location = 0) in vec4 position;
layout(location = 1) in vec2 uv;
out smooth vec2 v_uv;
void main()
{
gl_Position = position;//we don't do any projection
v_uv = uv; //send interpolated uvs to fragment shader
}
조각 쉐이더 : 당신이 볼 수 있듯이
#version 430 core
layout(binding = 1) uniform sampler2D tex;
in smooth vec2 v_uv;
out vec4 o_color;
void main()
{
o_color= texture(tex,v_uv);
}
, 우리가 통과 여기 예를 들어 텍스처 매핑 된 형상을 그리기위한 간단한 쉐이더 프로그램 소스입니다 uv
조각 그림자 셰이더에 out
변수를 사용하여이 변수를 표시하는 특성을 사용합니다. 귀하의 경우, 귀하의 편집기를 사용하는 누군가가, 버텍스 쉐이더에 변화를 추가하면, 또한 프래그먼트 쉐이더에서 변화하는 버전의 in
을 추가해야합니다. 희망을 당신의 질문에 대답.
이는 프로그램의 아키텍처, 지원하려는 기능, 데이터 레이아웃 및 기타 많은 사항에 따라 다릅니다. 현재의 형태에서이 질문은 너무 광범위합니다. –