मैंने this प्रश्न देखा और यह वास्तव में कुछ प्रकाश डाला। इसके बावजूद, मुझे यह पता लगाना प्रतीत नहीं होता कि मैं अपने शेडर को "अनुचित तरीके से" कैसे लोड कर रहा हूं, क्योंकि में शेडर लोडिंग कोड में हालिया परिवर्तन किए बिना पहले निष्पादित किया गया है, इसलिए मुझे लगता है कि ये त्रुटियां मेरे ड्रॉ से आनी चाहिए कहता है।
इसके बावजूद, मैं अभी भी शराब के लिए शेडर फ़ाइलों को पोस्ट करूंगा, ड्रॉ फ़ंक्शन जो सर्कल को प्रस्तुत करने की कोशिश कर रहा हूं, और कोड जो शेडर फ़ाइल में स्ट्रिंग के रूप में लोड होता है, को खींचने के लिए उपयोग किया जाता है।
असल में मुझे यह जानने की ज़रूरत है कि मुझे इन त्रुटियों को क्यों मिल रहा है और उनके साथ क्या गलत है?
(डिबग आउटपुट से)
ERROR {
OpenGL Says:
Vertex info
-----------
0(1) : error C0000: syntax error, unexpected $undefined at token "<undefined>"
Fragment info
-------------
0(1) : error C0000: syntax error, unexpected $undefined at token "<undefined>"
};
ड्रा कोड
void Circle::draw(GLuint program)
{
const size_t centerMag = mCenter.length();
glUseProgram(program);
for(float t = 0; t < mCircumference; t += 0.1)
{
float x = centerMag + glm::cos(2 * M_PI * t);
float y = centerMag + glm::sin(2 * M_PI * t);
mVertices->push_back(glm::vec4(x, y, 0, 1));
}
QListIterator<glm::vec4> iVertices(*mVertices);
const size_t size = mVertices->size();
float** verts = new float*[ size ];
size_t i = 0;
glEnableClientState(GL_VERTEX_ARRAY);
while(iVertices.hasNext())
{
verts[ i ] = new float[ size ];
verts[ i ] = const_cast< float* >(glm::value_ptr(iVertices.next()));
glVertexPointer(4, GL_FLOAT, 0, verts[ i ]);
glDrawArrays(GL_LINES, 0, 4);
++i;
}
glDisableClientState(GL_VERTEX_ARRAY);
for(unsigned iMem = 0; iMem < size; ++iMem)
{
delete[] verts[ iMem ];
verts[ iMem ] = NULL;
}
delete[] verts;
verts = NULL;
}
FileUtility
QString FileUtility::readShader(QString filepath)
{
std::ifstream in(filepath.toStdString().c_str());
std::stringstream shaderDat;
shaderDat << in.rdbuf();
QString shaderFile;
shaderFile += shaderDat.str().c_str();
in.close();
return shaderFile;
}
GenericColor.frag
#version 330
out vec4 outputColor;
void main()
{
outputColor = vec4(1.0f, 0, 0, 1.0f);
}
Position.vert
#version 330
layout(location = 0) in vec4 position;
void main()
{
gl_Position = position;
}
अद्यतन
चूंकि मेरे शेडर बाध्यकारी/संकलन कोड का अनुरोध किया गया था, मैं मैं भी सिर्फ पोस्ट कर सकते हैं लगा मेरी पूरे शेडर हैंडलर, साथ ही साथ इंजन वर्ग।
- Engine - ShaderHandler।
Info {
Shader Source #version 330
in uniform mvp;
layout(location = 0) in vec4 position;
void main()
{
gl_ModelViewProjectionMatrix = mvp;
gl_Position = position;
}
};
Info {
Shader Source #version 330
out vec4 outputColor;
void main()
{
outputColor = vec4(1.0f, 0, 0, 1.0f);
}
};
क्या आप शेडर संकलन/वीए बाध्यकारी कोड भी दिखा सकते हैं? –
अपडेट किया गया, मैंने पूरी स्रोत फ़ाइल पेस्टबिन करने का निर्णय लिया। – zeboidlund
धन्यवाद, मुझे एक नज़र आएगी। –